@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,292 @@
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 { AcCmErrors } from '@mlightcad/common';
17
+ import { AcGeBox2d, AcGePoint2d, AcGePoint3d } from '../math';
18
+ import { AcGeMathUtil, TAU } from '../util';
19
+ import { AcGeCurve2d } from './AcGeCurve2d';
20
+ /**
21
+ * Class representing a 3d ellipse arc defined by center, normal, majorAxis, majorAxisRadius,
22
+ * minorAxisRadius, startAngle, and endAngle.
23
+ * - The majorAxis vector represents half the major axis of the ellipse (that is, from the center
24
+ * point to the start point of the ellipse) and is the zero angle for startAngle and endAngle.
25
+ * - Positive angles are counter-clockwise when looking down the normal vector (that is, right-hand
26
+ * rule). A startAngle of 0 and endAngle of 2pi will produce a closed Ellipse.
27
+ * - If startAngle is equal to 0 and endAngle is equal to 2 * Math.PI, it represents a full 3d ellipse.
28
+ */
29
+ var AcGeEllipseArc2d = /** @class */ (function (_super) {
30
+ __extends(AcGeEllipseArc2d, _super);
31
+ /**
32
+ * Construct an instance of the ellipse arc.
33
+ * @param center Center point of the ellipse.
34
+ * @param majorAxisRadius Major axis radius of the ellipse.
35
+ * @param minorAxisRadius Minor axis radius of the ellipse.
36
+ * @param startAngle Start angle of the ellipse arc in radians.
37
+ * @param endAngle End angle of the ellipse arc in radians.
38
+ * @param clockwise The flag Whether the ellipse arc is drawn clockwise. Default is false.
39
+ * @param rotation The rotation angle of the ellipse in radians, counterclockwise from the positive X
40
+ * axis (optional). Default is 0.
41
+ */
42
+ function AcGeEllipseArc2d(center, majorAxisRadius, minorAxisRadius, startAngle, endAngle, clockwise, rotation) {
43
+ if (startAngle === void 0) { startAngle = 0; }
44
+ if (endAngle === void 0) { endAngle = TAU; }
45
+ if (clockwise === void 0) { clockwise = false; }
46
+ if (rotation === void 0) { rotation = 0; }
47
+ var _this = _super.call(this) || this;
48
+ _this.center = center;
49
+ _this.majorAxisRadius = majorAxisRadius;
50
+ _this.minorAxisRadius = minorAxisRadius;
51
+ // Check whether it is a full ellipse
52
+ if ((endAngle - startAngle) % TAU == 0) {
53
+ _this.startAngle = 0;
54
+ _this.endAngle = TAU;
55
+ }
56
+ else {
57
+ _this.startAngle = startAngle;
58
+ _this.endAngle = endAngle;
59
+ }
60
+ _this.clockwise = clockwise;
61
+ _this.rotation = rotation;
62
+ return _this;
63
+ }
64
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "center", {
65
+ /**
66
+ * Center of the ellipse in 3d space
67
+ */
68
+ get: function () {
69
+ return this._center;
70
+ },
71
+ set: function (value) {
72
+ this._center = new AcGePoint3d(value.x, value.y, value.z || 0);
73
+ this._boundingBoxNeedsUpdate = true;
74
+ },
75
+ enumerable: false,
76
+ configurable: true
77
+ });
78
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "majorAxisRadius", {
79
+ /**
80
+ * Major axis radius of the ellipse
81
+ */
82
+ get: function () {
83
+ return this._majorAxisRadius;
84
+ },
85
+ set: function (value) {
86
+ if (value < 0)
87
+ throw AcCmErrors.ILLEGAL_PARAMETERS;
88
+ this._majorAxisRadius = value;
89
+ this._boundingBoxNeedsUpdate = true;
90
+ },
91
+ enumerable: false,
92
+ configurable: true
93
+ });
94
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "minorAxisRadius", {
95
+ /**
96
+ * Minor axis radius of the ellipse
97
+ */
98
+ get: function () {
99
+ return this._minorAxisRadius;
100
+ },
101
+ set: function (value) {
102
+ if (value < 0)
103
+ throw AcCmErrors.ILLEGAL_PARAMETERS;
104
+ this._minorAxisRadius = value;
105
+ this._boundingBoxNeedsUpdate = true;
106
+ },
107
+ enumerable: false,
108
+ configurable: true
109
+ });
110
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "startAngle", {
111
+ /**
112
+ * Start angle of the ellipse arc in radians in the range -pi to pi.
113
+ */
114
+ get: function () {
115
+ return this._startAngle;
116
+ },
117
+ set: function (value) {
118
+ this._startAngle = AcGeMathUtil.normalizeAngle(value);
119
+ this._boundingBoxNeedsUpdate = true;
120
+ },
121
+ enumerable: false,
122
+ configurable: true
123
+ });
124
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "endAngle", {
125
+ /**
126
+ * End angle of the ellipse arc in radians in the range -pi to pi.
127
+ */
128
+ get: function () {
129
+ return this._endAngle;
130
+ },
131
+ set: function (value) {
132
+ this._endAngle =
133
+ this.startAngle == 0 && value == TAU
134
+ ? value
135
+ : AcGeMathUtil.normalizeAngle(value);
136
+ this._boundingBoxNeedsUpdate = true;
137
+ },
138
+ enumerable: false,
139
+ configurable: true
140
+ });
141
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "clockwise", {
142
+ /**
143
+ * The flag Whether the ellipse arc is drawn clockwise. Default is false.
144
+ */
145
+ get: function () {
146
+ return this._clockwise;
147
+ },
148
+ set: function (value) {
149
+ this._clockwise = value;
150
+ this._boundingBoxNeedsUpdate = true;
151
+ },
152
+ enumerable: false,
153
+ configurable: true
154
+ });
155
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "rotation", {
156
+ /**
157
+ * The rotation angle of the ellipse in radians, counterclockwise from the positive X axis (optional).
158
+ * Default is 0.
159
+ */
160
+ get: function () {
161
+ return this._rotation;
162
+ },
163
+ set: function (value) {
164
+ this._rotation = value;
165
+ this._boundingBoxNeedsUpdate = true;
166
+ },
167
+ enumerable: false,
168
+ configurable: true
169
+ });
170
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "deltaAngle", {
171
+ /**
172
+ * Return angle between endAngle and startAngle in range 0 to 2*PI
173
+ */
174
+ get: function () {
175
+ return AcGeMathUtil.normalizeAngle(this.endAngle - this.startAngle);
176
+ },
177
+ enumerable: false,
178
+ configurable: true
179
+ });
180
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "isLargeArc", {
181
+ /**
182
+ * Return true if the arc is a large arc whose delta angle value is greater than PI.
183
+ */
184
+ get: function () {
185
+ return Math.abs(this.deltaAngle) > Math.PI ? 1 : 0;
186
+ },
187
+ enumerable: false,
188
+ configurable: true
189
+ });
190
+ /**
191
+ * Compute the bounding box of the 3D ellipse arc.
192
+ * The bounding box is defined by its minimum and maximum x, y, and z coordinates.
193
+ * @returns Return bounding box containing the min and max coordinates
194
+ */
195
+ AcGeEllipseArc2d.prototype.calculateBoundingBox = function () {
196
+ var numPoints = 100;
197
+ var minX = Infinity, minY = Infinity;
198
+ var maxX = -Infinity, maxY = -Infinity;
199
+ for (var i = 0; i <= numPoints; i++) {
200
+ var point = this.getPoint(i / numPoints);
201
+ minX = Math.min(minX, point.x);
202
+ minY = Math.min(minY, point.y);
203
+ maxX = Math.max(maxX, point.x);
204
+ maxY = Math.max(maxY, point.y);
205
+ }
206
+ // Return the bounding box defined by min and max coordinates
207
+ return new AcGeBox2d({ x: minX, y: minY }, { x: maxX, y: maxY });
208
+ };
209
+ Object.defineProperty(AcGeEllipseArc2d.prototype, "closed", {
210
+ /**
211
+ * Return true if its start point is identical to its end point. Otherwise, return false.
212
+ */
213
+ get: function () {
214
+ return this.deltaAngle == 0;
215
+ },
216
+ enumerable: false,
217
+ configurable: true
218
+ });
219
+ /**
220
+ * Return the point for a given position on the curve according to the arc length.
221
+ * @param t Input a position on the curve according to the arc length. Must be in the range [ 0, 1 ].
222
+ * @returns Return the point for a given position on the curve according to the arc length.
223
+ */
224
+ AcGeEllipseArc2d.prototype.getPoint = function (t) {
225
+ var twoPi = Math.PI * 2;
226
+ var deltaAngle = this.endAngle - this.startAngle;
227
+ var samePoints = Math.abs(deltaAngle) < Number.EPSILON;
228
+ // ensures that deltaAngle is 0 .. 2 PI
229
+ while (deltaAngle < 0)
230
+ deltaAngle += twoPi;
231
+ while (deltaAngle > twoPi)
232
+ deltaAngle -= twoPi;
233
+ if (deltaAngle < Number.EPSILON) {
234
+ if (samePoints) {
235
+ deltaAngle = 0;
236
+ }
237
+ else {
238
+ deltaAngle = twoPi;
239
+ }
240
+ }
241
+ if (this.clockwise === true && !samePoints) {
242
+ if (deltaAngle === twoPi) {
243
+ deltaAngle = -twoPi;
244
+ }
245
+ else {
246
+ deltaAngle = deltaAngle - twoPi;
247
+ }
248
+ }
249
+ var angle = this.startAngle + t * deltaAngle;
250
+ var x = this.center.x + this.majorAxisRadius * Math.cos(angle);
251
+ var y = this.center.y + this.minorAxisRadius * Math.sin(angle);
252
+ if (this.rotation !== 0) {
253
+ var cos = Math.cos(this.rotation);
254
+ var sin = Math.sin(this.rotation);
255
+ var tx = x - this.center.x;
256
+ var ty = y - this.center.y;
257
+ // Rotate the point about the center of the ellipse.
258
+ x = tx * cos - ty * sin + this.center.x;
259
+ y = tx * sin + ty * cos + this.center.y;
260
+ }
261
+ return new AcGePoint2d(x, y);
262
+ };
263
+ /**
264
+ * @inheritdoc
265
+ */
266
+ AcGeEllipseArc2d.prototype.transform = function (_matrix) {
267
+ this._boundingBoxNeedsUpdate = true;
268
+ return this;
269
+ };
270
+ /**
271
+ * @inheritdoc
272
+ */
273
+ AcGeEllipseArc2d.prototype.copy = function (value) {
274
+ this.center = value.center;
275
+ this.majorAxisRadius = value.majorAxisRadius;
276
+ this.minorAxisRadius = value.minorAxisRadius;
277
+ this.startAngle = value.startAngle;
278
+ this.endAngle = value.endAngle;
279
+ this.clockwise = value.clockwise;
280
+ this.rotation = value.rotation;
281
+ return this;
282
+ };
283
+ /**
284
+ * @inheritdoc
285
+ */
286
+ AcGeEllipseArc2d.prototype.clone = function () {
287
+ return new AcGeEllipseArc2d(this.center, this.majorAxisRadius, this.minorAxisRadius, this.startAngle, this.endAngle, this.clockwise, this.rotation);
288
+ };
289
+ return AcGeEllipseArc2d;
290
+ }(AcGeCurve2d));
291
+ export { AcGeEllipseArc2d };
292
+ //# sourceMappingURL=AcGeEllipseArc2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeEllipseArc2d.js","sourceRoot":"","sources":["../../src/geometry/AcGeEllipseArc2d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { AcGeBox3d, AcGeMatrix3d, AcGePlane, AcGePoint3d, AcGePointLike, AcGeVector3d, AcGeVector3dLike } from '../math';
2
+ import { AcGeCurve3d } from './AcGeCurve3d';
3
+ /**
4
+ * Class representing a 3d ellipse arc defined by center, normal, majorAxis, majorAxisRadius,
5
+ * minorAxisRadius, startAngle, and endAngle.
6
+ * - The majorAxis vector represents half the major axis of the ellipse (that is, from the center
7
+ * point to the start point of the ellipse) and is the zero angle for startAngle and endAngle.
8
+ * - Positive angles are counter-clockwise when looking down the normal vector (that is, right-hand
9
+ * rule). A startAngle of 0 and endAngle of 2pi will produce a closed Ellipse.
10
+ * - If startAngle is equal to 0 and endAngle is equal to 2 * Math.PI, it represents a full 3d ellipse.
11
+ */
12
+ export declare class AcGeEllipseArc3d extends AcGeCurve3d {
13
+ private _center;
14
+ private _normal;
15
+ private _majorAxis;
16
+ private _majorAxisRadius;
17
+ private _minorAxisRadius;
18
+ private _startAngle;
19
+ private _endAngle;
20
+ /**
21
+ * Construct an instance of the ellipse arc.
22
+ * @param center Center point of the ellipse.
23
+ * @param normal Normal vector defining the plane of the ellipse
24
+ * @param majorAxis Major axis vector (in WCS coordinates) of the ellipse.
25
+ * @param majorAxisRadius Major axis radius of the ellipse.
26
+ * @param minorAxisRadius Minor axis radius of the ellipse.
27
+ * @param startAngle Start angle of the ellipse arc in radians.
28
+ * @param endAngle End angle of the ellipse arc in radians.
29
+ */
30
+ constructor(center: AcGePointLike, normal: AcGeVector3dLike, majorAxis: AcGeVector3dLike, majorAxisRadius: number, minorAxisRadius: number, startAngle?: number, endAngle?: number);
31
+ /**
32
+ * Center of the ellipse in 3d space
33
+ */
34
+ get center(): AcGePoint3d;
35
+ set center(value: AcGePointLike);
36
+ /**
37
+ * Major axis radius of the ellipse
38
+ */
39
+ get majorAxisRadius(): number;
40
+ set majorAxisRadius(value: number);
41
+ /**
42
+ * Minor axis radius of the ellipse
43
+ */
44
+ get minorAxisRadius(): number;
45
+ set minorAxisRadius(value: number);
46
+ /**
47
+ * Start angle of the ellipse arc in radians in the range -pi to pi.
48
+ */
49
+ get startAngle(): number;
50
+ set startAngle(value: number);
51
+ /**
52
+ * End angle of the ellipse arc in radians in the range -pi to pi.
53
+ */
54
+ get endAngle(): number;
55
+ set endAngle(value: number);
56
+ /**
57
+ * Return angle between endAngle and startAngle in range 0 to 2*PI
58
+ */
59
+ get deltaAngle(): number;
60
+ /**
61
+ * Return true if the arc is a large arc whose delta angle value is greater than PI.
62
+ */
63
+ get isLargeArc(): 0 | 1;
64
+ /**
65
+ * Return true if the arc is clockwise from startAngle to endAngle
66
+ */
67
+ get clockwise(): boolean;
68
+ /**
69
+ * Unit normal vector defining the plane of the ellipse
70
+ */
71
+ get normal(): AcGeVector3d;
72
+ set normal(value: AcGeVector3dLike);
73
+ /**
74
+ * Unit major axis vector (in WCS coordinates) of the ellipse. The major axis vector is the vector from the
75
+ * ellipse's center point to its start point.
76
+ */
77
+ get majorAxis(): AcGeVector3d;
78
+ set majorAxis(value: AcGeVector3dLike);
79
+ /**
80
+ * Unit minor axis vector (in WCS coordinates) of the ellipse.
81
+ */
82
+ get minorAxis(): AcGeVector3d;
83
+ /**
84
+ * Compute the start point of the ellipse arc.
85
+ * @returns Return the start point of the ellipse arc.
86
+ */
87
+ get startPoint(): AcGePoint3d;
88
+ /**
89
+ * Compute the end point of the ellipse arc.
90
+ * @returns Return the end point of the ellipse arc.
91
+ */
92
+ get endPoint(): AcGePoint3d;
93
+ /**
94
+ * @inheritdoc
95
+ */
96
+ get length(): number;
97
+ /**
98
+ * Compute the bounding box of the 3D ellipse arc.
99
+ * The bounding box is defined by its minimum and maximum x, y, and z coordinates.
100
+ * @returns Return bounding box containing the min and max coordinates
101
+ */
102
+ calculateBoundingBox(): AcGeBox3d;
103
+ /**
104
+ * Return true if its start point is identical to its end point. Otherwise, return false.
105
+ */
106
+ get closed(): boolean;
107
+ getPoints(numPoints?: number): AcGePoint3d[];
108
+ /**
109
+ * Calculate a point on the ellipse at a given angle.
110
+ * @param angle Input the angle in radians where the point is to be calculated.
111
+ * @returns Return the 3d coordinates of the point on the ellipse.
112
+ */
113
+ getPointAtAngle(angle: number): AcGePoint3d;
114
+ /**
115
+ * Determines whether a given point is inside the ellipse.
116
+ * @param point - The 3D point to check.
117
+ * @returns - True if the point is inside the ellipse, false otherwise.
118
+ */
119
+ contains(point: AcGePoint3d): boolean;
120
+ /**
121
+ * @inheritdoc
122
+ */
123
+ transform(_matrix: AcGeMatrix3d): this;
124
+ /**
125
+ * @inheritdoc
126
+ */
127
+ copy(value: AcGeEllipseArc3d): this;
128
+ /**
129
+ * @inheritdoc
130
+ */
131
+ clone(): AcGeEllipseArc3d;
132
+ /**
133
+ * Return the plane in which the ellipse arc lies.
134
+ */
135
+ get plane(): AcGePlane;
136
+ /**
137
+ *
138
+ */
139
+ private toVerbEllipseArc;
140
+ }
141
+ //# sourceMappingURL=AcGeEllipseArc3d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeEllipseArc3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeEllipseArc3d.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAE/C,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,CAAC,OAAO,CAAe;IAE9B,OAAO,CAAC,UAAU,CAAe;IAEjC,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;;;;;;OASG;gBAED,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,gBAAgB,EAC3B,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,UAAU,GAAE,MAAU,EACtB,QAAQ,GAAE,MAAY;IAkBxB;;OAEG;IACH,IAAI,MAAM,IAAI,WAAW,CAExB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,aAAa,EAG9B;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IACD,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,EAIhC;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IACD,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,EAIhC;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAG3B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAMzB;IAED;;OAEG;IACH,IAAI,UAAU,WAEb;IAED;;OAEG;IACH,IAAI,UAAU,UAEb;IAED;;OAEG;IACH,IAAI,SAAS,YAEZ;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,YAAY,CAEzB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAKjC;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,YAAY,CAE5B;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAKpC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,YAAY,CAI5B;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,WAAW,CAE5B;IAED;;;OAGG;IACH,IAAI,QAAQ,IAAI,WAAW,CAE1B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED;;;;OAIG;IACH,oBAAoB;IAiEpB;;OAEG;IACH,IAAI,MAAM,YAET;IAED,SAAS,CAAC,SAAS,GAAE,MAAY,GAAG,WAAW,EAAE;IAgBjD;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAmB3C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAgBrC;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,YAAY;IAK/B;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,gBAAgB;IAY5B;;OAEG;IACH,KAAK;IAYL;;OAEG;IACH,IAAI,KAAK,IAAI,SAAS,CAGrB;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAqBzB"}