@mlightcad/geometry-engine 1.0.0

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 (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/dist/geometry-engine.js +10186 -0
  4. package/dist/geometry-engine.umd.cjs +4 -0
  5. package/lib/geometry/AcGeArea2d.d.ts +61 -0
  6. package/lib/geometry/AcGeArea2d.d.ts.map +1 -0
  7. package/lib/geometry/AcGeArea2d.js +174 -0
  8. package/lib/geometry/AcGeArea2d.js.map +1 -0
  9. package/lib/geometry/AcGeCircArc2d.d.ts +108 -0
  10. package/lib/geometry/AcGeCircArc2d.d.ts.map +1 -0
  11. package/lib/geometry/AcGeCircArc2d.js +412 -0
  12. package/lib/geometry/AcGeCircArc2d.js.map +1 -0
  13. package/lib/geometry/AcGeCircArc3d.d.ts +138 -0
  14. package/lib/geometry/AcGeCircArc3d.d.ts.map +1 -0
  15. package/lib/geometry/AcGeCircArc3d.js +447 -0
  16. package/lib/geometry/AcGeCircArc3d.js.map +1 -0
  17. package/lib/geometry/AcGeCurve2d.d.ts +85 -0
  18. package/lib/geometry/AcGeCurve2d.d.ts.map +1 -0
  19. package/lib/geometry/AcGeCurve2d.js +213 -0
  20. package/lib/geometry/AcGeCurve2d.js.map +1 -0
  21. package/lib/geometry/AcGeCurve3d.d.ts +27 -0
  22. package/lib/geometry/AcGeCurve3d.d.ts.map +1 -0
  23. package/lib/geometry/AcGeCurve3d.js +29 -0
  24. package/lib/geometry/AcGeCurve3d.js.map +1 -0
  25. package/lib/geometry/AcGeEllipseArc2d.d.ts +105 -0
  26. package/lib/geometry/AcGeEllipseArc2d.d.ts.map +1 -0
  27. package/lib/geometry/AcGeEllipseArc2d.js +292 -0
  28. package/lib/geometry/AcGeEllipseArc2d.js.map +1 -0
  29. package/lib/geometry/AcGeEllipseArc3d.d.ts +141 -0
  30. package/lib/geometry/AcGeEllipseArc3d.d.ts.map +1 -0
  31. package/lib/geometry/AcGeEllipseArc3d.js +442 -0
  32. package/lib/geometry/AcGeEllipseArc3d.js.map +1 -0
  33. package/lib/geometry/AcGeLine2d.d.ts +56 -0
  34. package/lib/geometry/AcGeLine2d.d.ts.map +1 -0
  35. package/lib/geometry/AcGeLine2d.js +125 -0
  36. package/lib/geometry/AcGeLine2d.js.map +1 -0
  37. package/lib/geometry/AcGeLine3d.d.ts +134 -0
  38. package/lib/geometry/AcGeLine3d.d.ts.map +1 -0
  39. package/lib/geometry/AcGeLine3d.js +291 -0
  40. package/lib/geometry/AcGeLine3d.js.map +1 -0
  41. package/lib/geometry/AcGeLoop2d.d.ts +59 -0
  42. package/lib/geometry/AcGeLoop2d.d.ts.map +1 -0
  43. package/lib/geometry/AcGeLoop2d.js +141 -0
  44. package/lib/geometry/AcGeLoop2d.js.map +1 -0
  45. package/lib/geometry/AcGePolyline2d.d.ts +90 -0
  46. package/lib/geometry/AcGePolyline2d.d.ts.map +1 -0
  47. package/lib/geometry/AcGePolyline2d.js +224 -0
  48. package/lib/geometry/AcGePolyline2d.js.map +1 -0
  49. package/lib/geometry/AcGeShape.d.ts +12 -0
  50. package/lib/geometry/AcGeShape.d.ts.map +1 -0
  51. package/lib/geometry/AcGeShape.js +22 -0
  52. package/lib/geometry/AcGeShape.js.map +1 -0
  53. package/lib/geometry/AcGeShape2d.d.ts +31 -0
  54. package/lib/geometry/AcGeShape2d.d.ts.map +1 -0
  55. package/lib/geometry/AcGeShape2d.js +51 -0
  56. package/lib/geometry/AcGeShape2d.js.map +1 -0
  57. package/lib/geometry/AcGeShape3d.d.ts +33 -0
  58. package/lib/geometry/AcGeShape3d.d.ts.map +1 -0
  59. package/lib/geometry/AcGeShape3d.js +52 -0
  60. package/lib/geometry/AcGeShape3d.js.map +1 -0
  61. package/lib/geometry/AcGeSpline3d.d.ts +77 -0
  62. package/lib/geometry/AcGeSpline3d.d.ts.map +1 -0
  63. package/lib/geometry/AcGeSpline3d.js +221 -0
  64. package/lib/geometry/AcGeSpline3d.js.map +1 -0
  65. package/lib/geometry/index.d.ts +13 -0
  66. package/lib/geometry/index.d.ts.map +1 -0
  67. package/lib/geometry/index.js +13 -0
  68. package/lib/geometry/index.js.map +1 -0
  69. package/lib/index.d.ts +4 -0
  70. package/lib/index.d.ts.map +1 -0
  71. package/lib/index.js +4 -0
  72. package/lib/index.js.map +1 -0
  73. package/lib/math/AcGeBox2d.d.ts +173 -0
  74. package/lib/math/AcGeBox2d.d.ts.map +1 -0
  75. package/lib/math/AcGeBox2d.js +289 -0
  76. package/lib/math/AcGeBox2d.js.map +1 -0
  77. package/lib/math/AcGeBox3d.d.ts +195 -0
  78. package/lib/math/AcGeBox3d.d.ts.map +1 -0
  79. package/lib/math/AcGeBox3d.js +378 -0
  80. package/lib/math/AcGeBox3d.js.map +1 -0
  81. package/lib/math/AcGeEuler.d.ts +133 -0
  82. package/lib/math/AcGeEuler.d.ts.map +1 -0
  83. package/lib/math/AcGeEuler.js +358 -0
  84. package/lib/math/AcGeEuler.js.map +1 -0
  85. package/lib/math/AcGeMatrix2d.d.ts +203 -0
  86. package/lib/math/AcGeMatrix2d.d.ts.map +1 -0
  87. package/lib/math/AcGeMatrix2d.js +393 -0
  88. package/lib/math/AcGeMatrix2d.js.map +1 -0
  89. package/lib/math/AcGeMatrix3d.d.ts +279 -0
  90. package/lib/math/AcGeMatrix3d.d.ts.map +1 -0
  91. package/lib/math/AcGeMatrix3d.js +1037 -0
  92. package/lib/math/AcGeMatrix3d.js.map +1 -0
  93. package/lib/math/AcGePlane.d.ts +131 -0
  94. package/lib/math/AcGePlane.d.ts.map +1 -0
  95. package/lib/math/AcGePlane.js +218 -0
  96. package/lib/math/AcGePlane.js.map +1 -0
  97. package/lib/math/AcGePoint.d.ts +4 -0
  98. package/lib/math/AcGePoint.d.ts.map +1 -0
  99. package/lib/math/AcGePoint.js +2 -0
  100. package/lib/math/AcGePoint.js.map +1 -0
  101. package/lib/math/AcGePoint2d.d.ts +17 -0
  102. package/lib/math/AcGePoint2d.d.ts.map +1 -0
  103. package/lib/math/AcGePoint2d.js +40 -0
  104. package/lib/math/AcGePoint2d.js.map +1 -0
  105. package/lib/math/AcGePoint3d.d.ts +18 -0
  106. package/lib/math/AcGePoint3d.d.ts.map +1 -0
  107. package/lib/math/AcGePoint3d.js +43 -0
  108. package/lib/math/AcGePoint3d.js.map +1 -0
  109. package/lib/math/AcGeQuaternion.d.ts +230 -0
  110. package/lib/math/AcGeQuaternion.d.ts.map +1 -0
  111. package/lib/math/AcGeQuaternion.js +666 -0
  112. package/lib/math/AcGeQuaternion.js.map +1 -0
  113. package/lib/math/AcGeVector.d.ts +9 -0
  114. package/lib/math/AcGeVector.d.ts.map +1 -0
  115. package/lib/math/AcGeVector.js +2 -0
  116. package/lib/math/AcGeVector.js.map +1 -0
  117. package/lib/math/AcGeVector2d.d.ts +361 -0
  118. package/lib/math/AcGeVector2d.d.ts.map +1 -0
  119. package/lib/math/AcGeVector2d.js +622 -0
  120. package/lib/math/AcGeVector2d.js.map +1 -0
  121. package/lib/math/AcGeVector3d.d.ts +493 -0
  122. package/lib/math/AcGeVector3d.d.ts.map +1 -0
  123. package/lib/math/AcGeVector3d.js +868 -0
  124. package/lib/math/AcGeVector3d.js.map +1 -0
  125. package/lib/math/index.d.ts +14 -0
  126. package/lib/math/index.d.ts.map +1 -0
  127. package/lib/math/index.js +14 -0
  128. package/lib/math/index.js.map +1 -0
  129. package/lib/util/AcGeConstants.d.ts +19 -0
  130. package/lib/util/AcGeConstants.d.ts.map +1 -0
  131. package/lib/util/AcGeConstants.js +25 -0
  132. package/lib/util/AcGeConstants.js.map +1 -0
  133. package/lib/util/AcGeGeometryUtil.d.ts +16 -0
  134. package/lib/util/AcGeGeometryUtil.d.ts.map +1 -0
  135. package/lib/util/AcGeGeometryUtil.js +56 -0
  136. package/lib/util/AcGeGeometryUtil.js.map +1 -0
  137. package/lib/util/AcGeMathUtil.d.ts +203 -0
  138. package/lib/util/AcGeMathUtil.d.ts.map +1 -0
  139. package/lib/util/AcGeMathUtil.js +585 -0
  140. package/lib/util/AcGeMathUtil.js.map +1 -0
  141. package/lib/util/AcGeTol.d.ts +91 -0
  142. package/lib/util/AcGeTol.d.ts.map +1 -0
  143. package/lib/util/AcGeTol.js +83 -0
  144. package/lib/util/AcGeTol.js.map +1 -0
  145. package/lib/util/index.d.ts +5 -0
  146. package/lib/util/index.d.ts.map +1 -0
  147. package/lib/util/index.js +5 -0
  148. package/lib/util/index.js.map +1 -0
  149. package/package.json +42 -0
@@ -0,0 +1,442 @@
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 verb from 'verb-nurbs-web';
29
+ import { AcGeBox3d, AcGePlane, AcGePoint3d, AcGeVector3d } from '../math';
30
+ import { AcGeMathUtil, ORIGIN_POINT_3D, TAU } from '../util';
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
+ if ((endAngle - startAngle) % TAU == 0) {
64
+ _this.startAngle = 0;
65
+ _this.endAngle = TAU;
66
+ }
67
+ else {
68
+ _this.startAngle = startAngle;
69
+ _this.endAngle = endAngle;
70
+ }
71
+ return _this;
72
+ }
73
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "center", {
74
+ /**
75
+ * Center of the ellipse in 3d space
76
+ */
77
+ get: function () {
78
+ return this._center;
79
+ },
80
+ set: function (value) {
81
+ this._center = new AcGePoint3d(value.x, value.y, value.z || 0);
82
+ this._boundingBoxNeedsUpdate = true;
83
+ },
84
+ enumerable: false,
85
+ configurable: true
86
+ });
87
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "majorAxisRadius", {
88
+ /**
89
+ * Major axis radius of the ellipse
90
+ */
91
+ get: function () {
92
+ return this._majorAxisRadius;
93
+ },
94
+ set: function (value) {
95
+ if (value < 0)
96
+ throw AcCmErrors.ILLEGAL_PARAMETERS;
97
+ this._majorAxisRadius = value;
98
+ this._boundingBoxNeedsUpdate = true;
99
+ },
100
+ enumerable: false,
101
+ configurable: true
102
+ });
103
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "minorAxisRadius", {
104
+ /**
105
+ * Minor axis radius of the ellipse
106
+ */
107
+ get: function () {
108
+ return this._minorAxisRadius;
109
+ },
110
+ set: function (value) {
111
+ if (value < 0)
112
+ throw AcCmErrors.ILLEGAL_PARAMETERS;
113
+ this._minorAxisRadius = value;
114
+ this._boundingBoxNeedsUpdate = true;
115
+ },
116
+ enumerable: false,
117
+ configurable: true
118
+ });
119
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "startAngle", {
120
+ /**
121
+ * Start angle of the ellipse arc in radians in the range -pi to pi.
122
+ */
123
+ get: function () {
124
+ return this._startAngle;
125
+ },
126
+ set: function (value) {
127
+ this._startAngle = AcGeMathUtil.normalizeAngle(value);
128
+ this._boundingBoxNeedsUpdate = true;
129
+ },
130
+ enumerable: false,
131
+ configurable: true
132
+ });
133
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "endAngle", {
134
+ /**
135
+ * End angle of the ellipse arc in radians in the range -pi to pi.
136
+ */
137
+ get: function () {
138
+ return this._endAngle;
139
+ },
140
+ set: function (value) {
141
+ this._endAngle =
142
+ this.startAngle == 0 && value == TAU
143
+ ? value
144
+ : AcGeMathUtil.normalizeAngle(value);
145
+ this._boundingBoxNeedsUpdate = true;
146
+ },
147
+ enumerable: false,
148
+ configurable: true
149
+ });
150
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "deltaAngle", {
151
+ /**
152
+ * Return angle between endAngle and startAngle in range 0 to 2*PI
153
+ */
154
+ get: function () {
155
+ return AcGeMathUtil.normalizeAngle(this.endAngle - this.startAngle);
156
+ },
157
+ enumerable: false,
158
+ configurable: true
159
+ });
160
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "isLargeArc", {
161
+ /**
162
+ * Return true if the arc is a large arc whose delta angle value is greater than PI.
163
+ */
164
+ get: function () {
165
+ return Math.abs(this.deltaAngle) > Math.PI ? 1 : 0;
166
+ },
167
+ enumerable: false,
168
+ configurable: true
169
+ });
170
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "clockwise", {
171
+ /**
172
+ * Return true if the arc is clockwise from startAngle to endAngle
173
+ */
174
+ get: function () {
175
+ return this.deltaAngle <= 0;
176
+ },
177
+ enumerable: false,
178
+ configurable: true
179
+ });
180
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "normal", {
181
+ /**
182
+ * Unit normal vector defining the plane of the ellipse
183
+ */
184
+ get: function () {
185
+ return this._normal;
186
+ },
187
+ set: function (value) {
188
+ this._normal = new AcGeVector3d(value.x, value.y, value.z);
189
+ // Normalize the normal vector to ensure it's a unit vector
190
+ this._normal.normalize();
191
+ this._boundingBoxNeedsUpdate = true;
192
+ },
193
+ enumerable: false,
194
+ configurable: true
195
+ });
196
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "majorAxis", {
197
+ /**
198
+ * Unit major axis vector (in WCS coordinates) of the ellipse. The major axis vector is the vector from the
199
+ * ellipse's center point to its start point.
200
+ */
201
+ get: function () {
202
+ return this._majorAxis;
203
+ },
204
+ set: function (value) {
205
+ this._majorAxis = new AcGeVector3d(value.x, value.y, value.z);
206
+ // Normalize the normal vector to ensure it's a unit vector
207
+ this._majorAxis.normalize();
208
+ this._boundingBoxNeedsUpdate = true;
209
+ },
210
+ enumerable: false,
211
+ configurable: true
212
+ });
213
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "minorAxis", {
214
+ /**
215
+ * Unit minor axis vector (in WCS coordinates) of the ellipse.
216
+ */
217
+ get: function () {
218
+ return new AcGeVector3d()
219
+ .crossVectors(this.normal, this.majorAxis)
220
+ .normalize();
221
+ },
222
+ enumerable: false,
223
+ configurable: true
224
+ });
225
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "startPoint", {
226
+ /**
227
+ * Compute the start point of the ellipse arc.
228
+ * @returns Return the start point of the ellipse arc.
229
+ */
230
+ get: function () {
231
+ return this.getPointAtAngle(this._startAngle);
232
+ },
233
+ enumerable: false,
234
+ configurable: true
235
+ });
236
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "endPoint", {
237
+ /**
238
+ * Compute the end point of the ellipse arc.
239
+ * @returns Return the end point of the ellipse arc.
240
+ */
241
+ get: function () {
242
+ return this.getPointAtAngle(this._endAngle);
243
+ },
244
+ enumerable: false,
245
+ configurable: true
246
+ });
247
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "length", {
248
+ /**
249
+ * @inheritdoc
250
+ */
251
+ get: function () {
252
+ var ellipseArc = this.toVerbEllipseArc();
253
+ return ellipseArc.length();
254
+ },
255
+ enumerable: false,
256
+ configurable: true
257
+ });
258
+ /**
259
+ * Compute the bounding box of the 3D ellipse arc.
260
+ * The bounding box is defined by its minimum and maximum x, y, and z coordinates.
261
+ * @returns Return bounding box containing the min and max coordinates
262
+ */
263
+ AcGeEllipseArc3d.prototype.calculateBoundingBox = function () {
264
+ var e_1, _a;
265
+ // To make it faster, check whether major axis is euqal to x-axis or y-axis firstly because
266
+ // major axis of ellipse arc is equal to x-axis or y-axis in most of cases.
267
+ if (this.majorAxis.equals(AcGeVector3d.X_AXIS) ||
268
+ this.majorAxis.equals(AcGeVector3d.Y_AXIS) ||
269
+ this.majorAxis.isParallelTo(AcGeVector3d.X_AXIS) ||
270
+ this.majorAxis.isParallelTo(AcGeVector3d.Y_AXIS)) {
271
+ var angles = [this.startAngle, this.endAngle];
272
+ for (var i = 0; i < 2 * Math.PI; i += Math.PI / 2) {
273
+ if (AcGeMathUtil.isBetweenAngle(i, this.startAngle, this.endAngle)) {
274
+ angles.push(i);
275
+ }
276
+ }
277
+ var minX = Infinity, minY = Infinity, minZ = Infinity;
278
+ var maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
279
+ try {
280
+ for (var angles_1 = __values(angles), angles_1_1 = angles_1.next(); !angles_1_1.done; angles_1_1 = angles_1.next()) {
281
+ var angle = angles_1_1.value;
282
+ var point = this.getPointAtAngle(angle);
283
+ if (point.x < minX)
284
+ minX = point.x;
285
+ if (point.y < minY)
286
+ minY = point.y;
287
+ if (point.z < minZ)
288
+ minZ = point.z;
289
+ if (point.x > maxX)
290
+ maxX = point.x;
291
+ if (point.y > maxY)
292
+ maxY = point.y;
293
+ if (point.z > maxZ)
294
+ maxZ = point.z;
295
+ }
296
+ }
297
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
298
+ finally {
299
+ try {
300
+ if (angles_1_1 && !angles_1_1.done && (_a = angles_1.return)) _a.call(angles_1);
301
+ }
302
+ finally { if (e_1) throw e_1.error; }
303
+ }
304
+ return new AcGeBox3d({ x: minX, y: minY, z: minZ }, { x: maxX, y: maxY, z: maxZ });
305
+ }
306
+ else {
307
+ var numPoints = 100;
308
+ var minX = Infinity, minY = Infinity, minZ = Infinity;
309
+ var maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
310
+ for (var i = 0; i <= numPoints; i++) {
311
+ var angle = this.startAngle + this.deltaAngle * (i / numPoints);
312
+ var point = this.getPointAtAngle(angle);
313
+ minX = Math.min(minX, point.x);
314
+ minY = Math.min(minY, point.y);
315
+ minZ = Math.min(minZ, point.z);
316
+ maxX = Math.max(maxX, point.x);
317
+ maxY = Math.max(maxY, point.y);
318
+ maxZ = Math.max(maxZ, point.z);
319
+ }
320
+ // Return the bounding box defined by min and max coordinates
321
+ return new AcGeBox3d({ x: minX, y: minY, z: minZ }, { x: maxX, y: maxY, z: maxZ });
322
+ }
323
+ };
324
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "closed", {
325
+ /**
326
+ * Return true if its start point is identical to its end point. Otherwise, return false.
327
+ */
328
+ get: function () {
329
+ return this.deltaAngle == 0;
330
+ },
331
+ enumerable: false,
332
+ configurable: true
333
+ });
334
+ AcGeEllipseArc3d.prototype.getPoints = function (numPoints) {
335
+ if (numPoints === void 0) { numPoints = 100; }
336
+ var points = [];
337
+ var deltaAngle = this.deltaAngle;
338
+ var startAngle = this.startAngle;
339
+ if (this.closed) {
340
+ deltaAngle = TAU;
341
+ startAngle = 0;
342
+ }
343
+ for (var i = 0; i <= numPoints; i++) {
344
+ var angle = startAngle + deltaAngle * (i / numPoints);
345
+ var point = this.getPointAtAngle(angle);
346
+ points.push(point);
347
+ }
348
+ return points;
349
+ };
350
+ /**
351
+ * Calculate a point on the ellipse at a given angle.
352
+ * @param angle Input the angle in radians where the point is to be calculated.
353
+ * @returns Return the 3d coordinates of the point on the ellipse.
354
+ */
355
+ AcGeEllipseArc3d.prototype.getPointAtAngle = function (angle) {
356
+ var cosTheta = Math.cos(angle);
357
+ var sinTheta = Math.sin(angle);
358
+ var tmp = this.minorAxis
359
+ .clone()
360
+ .multiplyScalar(this.minorAxisRadius)
361
+ .multiplyScalar(sinTheta);
362
+ var point = this.majorAxis
363
+ .clone()
364
+ .multiplyScalar(cosTheta * this.majorAxisRadius)
365
+ .add(tmp);
366
+ return new AcGePoint3d(this.center.x + point.x, this.center.y + point.y, this.center.z + point.z);
367
+ };
368
+ /**
369
+ * Determines whether a given point is inside the ellipse.
370
+ * @param point - The 3D point to check.
371
+ * @returns - True if the point is inside the ellipse, false otherwise.
372
+ */
373
+ AcGeEllipseArc3d.prototype.contains = function (point) {
374
+ var toPoint = new AcGeVector3d(point).sub(this.center);
375
+ var majorDist = toPoint.dot(this.majorAxis);
376
+ var minorDist = toPoint.dot(this.minorAxis);
377
+ var normalizedMajorDist = majorDist / this.majorAxisRadius;
378
+ var normalizedMinorDist = minorDist / this.minorAxisRadius;
379
+ return (normalizedMajorDist * normalizedMajorDist +
380
+ normalizedMinorDist * normalizedMinorDist <=
381
+ 1);
382
+ };
383
+ /**
384
+ * @inheritdoc
385
+ */
386
+ AcGeEllipseArc3d.prototype.transform = function (_matrix) {
387
+ this._boundingBoxNeedsUpdate = true;
388
+ return this;
389
+ };
390
+ /**
391
+ * @inheritdoc
392
+ */
393
+ AcGeEllipseArc3d.prototype.copy = function (value) {
394
+ this.center = value.center;
395
+ this.normal = value.normal;
396
+ this.majorAxis = value.majorAxis;
397
+ this.majorAxisRadius = value.majorAxisRadius;
398
+ this.minorAxisRadius = value.minorAxisRadius;
399
+ this.startAngle = value.startAngle;
400
+ this.endAngle = value.endAngle;
401
+ this._boundingBoxNeedsUpdate = true;
402
+ return this;
403
+ };
404
+ /**
405
+ * @inheritdoc
406
+ */
407
+ AcGeEllipseArc3d.prototype.clone = function () {
408
+ return new AcGeEllipseArc3d(this.center, this.normal, this.majorAxis, this.majorAxisRadius, this.minorAxisRadius, this.startAngle, this.endAngle);
409
+ };
410
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "plane", {
411
+ /**
412
+ * Return the plane in which the ellipse arc lies.
413
+ */
414
+ get: function () {
415
+ var distance = new AcGeVector3d(this.center).distanceTo(ORIGIN_POINT_3D);
416
+ return new AcGePlane(this.normal, distance);
417
+ },
418
+ enumerable: false,
419
+ configurable: true
420
+ });
421
+ /**
422
+ *
423
+ */
424
+ AcGeEllipseArc3d.prototype.toVerbEllipseArc = function () {
425
+ var center = new Array(3);
426
+ this.center.toArray(center);
427
+ var majorAxis = new Array(3);
428
+ this.majorAxis
429
+ .clone()
430
+ .multiplyScalar(this.majorAxisRadius)
431
+ .toArray(majorAxis);
432
+ var minorAxis = new Array(3);
433
+ this.minorAxis
434
+ .clone()
435
+ .multiplyScalar(this.minorAxisRadius)
436
+ .toArray(minorAxis);
437
+ return new verb.geom.EllipseArc(center, majorAxis, minorAxis, this.startAngle, this.endAngle);
438
+ };
439
+ return AcGeEllipseArc3d;
440
+ }(AcGeCurve3d));
441
+ export { AcGeEllipseArc3d };
442
+ //# sourceMappingURL=AcGeEllipseArc3d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeEllipseArc3d.js","sourceRoot":"","sources":["../../src/geometry/AcGeEllipseArc3d.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,IAAI,MAAM,gBAAgB,CAAA;AAEjC,OAAO,EACL,SAAS,EAET,SAAS,EACT,WAAW,EAEX,YAAY,EAEb,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;;;;;GAQG;AACH;IAAsC,oCAAW;IAgB/C;;;;;;;;;OASG;IACH,0BACE,MAAqB,EACrB,MAAwB,EACxB,SAA2B,EAC3B,eAAuB,EACvB,eAAuB,EACvB,UAAsB,EACtB,QAAsB;QADtB,2BAAA,EAAA,cAAsB;QACtB,yBAAA,EAAA,cAAsB;QAEtB,YAAA,MAAK,WAAE,SAAA;QACP,KAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,KAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,KAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,KAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,qCAAqC;QACrC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;YACvC,KAAI,CAAC,UAAU,GAAG,CAAC,CAAA;YACnB,KAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,KAAI,CAAC,UAAU,GAAG,UAAU,CAAA;YAC5B,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC1B,CAAC;;IACH,CAAC;IAKD,sBAAI,oCAAM;QAHV;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,OAAO,CAAA;QACrB,CAAC;aACD,UAAW,KAAoB;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YAC9D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;;;OAJA;IASD,sBAAI,6CAAe;QAHnB;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,gBAAgB,CAAA;QAC9B,CAAC;aACD,UAAoB,KAAa;YAC/B,IAAI,KAAK,GAAG,CAAC;gBAAE,MAAM,UAAU,CAAC,kBAAkB,CAAA;YAClD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;YAC7B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;;;OALA;IAUD,sBAAI,6CAAe;QAHnB;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,gBAAgB,CAAA;QAC9B,CAAC;aACD,UAAoB,KAAa;YAC/B,IAAI,KAAK,GAAG,CAAC;gBAAE,MAAM,UAAU,CAAC,kBAAkB,CAAA;YAClD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;YAC7B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;;;OALA;IAUD,sBAAI,wCAAU;QAHd;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,WAAW,CAAA;QACzB,CAAC;aACD,UAAe,KAAa;YAC1B,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YACrD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;;;OAJA;IASD,sBAAI,sCAAQ;QAHZ;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,SAAS,CAAA;QACvB,CAAC;aACD,UAAa,KAAa;YACxB,IAAI,CAAC,SAAS;gBACZ,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG;oBAClC,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YACxC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;;;OAPA;IAYD,sBAAI,wCAAU;QAHd;;WAEG;aACH;YACE,OAAO,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;QACrE,CAAC;;;OAAA;IAKD,sBAAI,wCAAU;QAHd;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpD,CAAC;;;OAAA;IAKD,sBAAI,uCAAS;QAHb;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QAC7B,CAAC;;;OAAA;IAKD,sBAAI,oCAAM;QAHV;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,OAAO,CAAA;QACrB,CAAC;aACD,UAAW,KAAuB;YAChC,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;YAC1D,2DAA2D;YAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA;YACxB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;;;OANA;IAYD,sBAAI,uCAAS;QAJb;;;WAGG;aACH;YACE,OAAO,IAAI,CAAC,UAAU,CAAA;QACxB,CAAC;aACD,UAAc,KAAuB;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;YAC7D,2DAA2D;YAC3D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAA;YAC3B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;;;OANA;IAWD,sBAAI,uCAAS;QAHb;;WAEG;aACH;YACE,OAAO,IAAI,YAAY,EAAE;iBACtB,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;iBACzC,SAAS,EAAE,CAAA;QAChB,CAAC;;;OAAA;IAMD,sBAAI,wCAAU;QAJd;;;WAGG;aACH;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC/C,CAAC;;;OAAA;IAMD,sBAAI,sCAAQ;QAJZ;;;WAGG;aACH;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC7C,CAAC;;;OAAA;IAKD,sBAAI,oCAAM;QAHV;;WAEG;aACH;YACE,IAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;YAC1C,OAAO,UAAU,CAAC,MAAM,EAAE,CAAA;QAC5B,CAAC;;;OAAA;IAED;;;;OAIG;IACH,+CAAoB,GAApB;;QACE,2FAA2F;QAC3F,2EAA2E;QAC3E,IACE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,EAChD,CAAC;YACD,IAAM,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAClD,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAChB,CAAC;YACH,CAAC;YAED,IAAI,IAAI,GAAG,QAAQ,EACjB,IAAI,GAAG,QAAQ,EACf,IAAI,GAAG,QAAQ,CAAA;YACjB,IAAI,IAAI,GAAG,CAAC,QAAQ,EAClB,IAAI,GAAG,CAAC,QAAQ,EAChB,IAAI,GAAG,CAAC,QAAQ,CAAA;;gBAElB,KAAoB,IAAA,WAAA,SAAA,MAAM,CAAA,8BAAA,kDAAE,CAAC;oBAAxB,IAAM,KAAK,mBAAA;oBACd,IAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;oBACzC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI;wBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;oBAClC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI;wBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;oBAClC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI;wBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;oBAClC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI;wBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;oBAClC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI;wBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;oBAClC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI;wBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;gBACpC,CAAC;;;;;;;;;YAED,OAAO,IAAI,SAAS,CAClB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAC7B,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAC9B,CAAA;QACH,CAAC;aAAM,CAAC;YACN,IAAM,SAAS,GAAG,GAAG,CAAA;YACrB,IAAI,IAAI,GAAG,QAAQ,EACjB,IAAI,GAAG,QAAQ,EACf,IAAI,GAAG,QAAQ,CAAA;YACjB,IAAI,IAAI,GAAG,CAAC,QAAQ,EAClB,IAAI,GAAG,CAAC,QAAQ,EAChB,IAAI,GAAG,CAAC,QAAQ,CAAA;YAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAM,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;gBACjE,IAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;gBACzC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;YAChC,CAAC;YAED,6DAA6D;YAC7D,OAAO,IAAI,SAAS,CAClB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAC7B,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAC9B,CAAA;QACH,CAAC;IACH,CAAC;IAKD,sBAAI,oCAAM;QAHV;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QAC7B,CAAC;;;OAAA;IAED,oCAAS,GAAT,UAAU,SAAuB;QAAvB,0BAAA,EAAA,eAAuB;QAC/B,IAAM,MAAM,GAAkB,EAAE,CAAA;QAChC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAChC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,UAAU,GAAG,GAAG,CAAA;YAChB,UAAU,GAAG,CAAC,CAAA;QAChB,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAM,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;YACvD,IAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;OAIG;IACH,0CAAe,GAAf,UAAgB,KAAa;QAC3B,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAChC,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAEhC,IAAM,GAAG,GAAG,IAAI,CAAC,SAAS;aACvB,KAAK,EAAE;aACP,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;aACpC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAC3B,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS;aACzB,KAAK,EAAE;aACP,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;aAC/C,GAAG,CAAC,GAAG,CAAC,CAAA;QACX,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EACvB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EACvB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CACxB,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,mCAAQ,GAAR,UAAS,KAAkB;QACzB,IAAM,OAAO,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAExD,IAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE7C,IAAM,mBAAmB,GAAG,SAAS,GAAG,IAAI,CAAC,eAAe,CAAA;QAC5D,IAAM,mBAAmB,GAAG,SAAS,GAAG,IAAI,CAAC,eAAe,CAAA;QAE5D,OAAO,CACL,mBAAmB,GAAG,mBAAmB;YACvC,mBAAmB,GAAG,mBAAmB;YAC3C,CAAC,CACF,CAAA;IACH,CAAC;IAED;;OAEG;IACH,oCAAS,GAAT,UAAU,OAAqB;QAC7B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,+BAAI,GAAJ,UAAK,KAAuB;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;QAChC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAA;QAC5C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAA;QAC5C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC9B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,gCAAK,GAAL;QACE,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,CACd,CAAA;IACH,CAAC;IAKD,sBAAI,mCAAK;QAHT;;WAEG;aACH;YACE,IAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;YAC1E,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC7C,CAAC;;;OAAA;IAED;;OAEG;IACK,2CAAgB,GAAxB;QACE,IAAM,MAAM,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC3B,IAAM,SAAS,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAA;QACtC,IAAI,CAAC,SAAS;aACX,KAAK,EAAE;aACP,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;aACpC,OAAO,CAAC,SAAS,CAAC,CAAA;QACrB,IAAM,SAAS,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAA;QACtC,IAAI,CAAC,SAAS;aACX,KAAK,EAAE;aACP,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;aACpC,OAAO,CAAC,SAAS,CAAC,CAAA;QACrB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAC7B,MAAM,EACN,SAAS,EACT,SAAS,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,CACd,CAAA;IACH,CAAC;IACH,uBAAC;AAAD,CAAC,AAhZD,CAAsC,WAAW,GAgZhD"}
@@ -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":";;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAgB,WAAW,EAAmB,MAAM,SAAS,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH;IAAgC,8BAAW;IAGzC;;;OAGG;IACH,oBAAY,KAAsB,EAAE,GAAoB;QACtD,YAAA,MAAK,WAAE,SAAA;QACP,KAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAA;QACpC,KAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;;IAClC,CAAC;IAMD,sBAAI,kCAAU;QAJd;;;WAGG;aACH;YACE,OAAO,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;aACD,UAAe,KAAsB;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;;;OAJA;IAUD,sBAAI,gCAAQ;QAJZ;;;WAGG;aACH;YACE,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;aACD,UAAa,KAAsB;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;;;OAJA;IAMD;;;OAGG;IACH,8BAAS,GAAT;QACE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC;IAKD,sBAAI,8BAAM;QAHV;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClD,CAAC;;;OAAA;IAED;;OAEG;IACH,yCAAoB,GAApB;QACE,IAAM,GAAG,GAAG,IAAI,WAAW,CACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACrC,CAAA;QACD,IAAM,GAAG,GAAG,IAAI,WAAW,CACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACrC,CAAA;QACD,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,8BAAS,GAAT,UAAU,MAAoB;QAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAKD,sBAAI,8BAAM;QAHV;;WAEG;aACH;YACE,OAAO,KAAK,CAAA;QACd,CAAC;;;OAAA;IAED;;OAEG;IACH,yBAAI,GAAJ,UAAK,KAAiB;QACpB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC9B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,0BAAK,GAAL;QACE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC/D,CAAC;IACH,iBAAC;AAAD,CAAC,AApGD,CAAgC,WAAW,GAoG1C"}