@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,412 @@
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
+ var __read = (this && this.__read) || function (o, n) {
28
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
29
+ if (!m) return o;
30
+ var i = m.call(o), r, ar = [], e;
31
+ try {
32
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
33
+ }
34
+ catch (error) { e = { error: error }; }
35
+ finally {
36
+ try {
37
+ if (r && !r.done && (m = i["return"])) m.call(i);
38
+ }
39
+ finally { if (e) throw e.error; }
40
+ }
41
+ return ar;
42
+ };
43
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
44
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
45
+ if (ar || !(i in from)) {
46
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
47
+ ar[i] = from[i];
48
+ }
49
+ }
50
+ return to.concat(ar || Array.prototype.slice.call(from));
51
+ };
52
+ import { AcCmErrors } from '@mlightcad/common';
53
+ import { AcGeBox2d, AcGePoint2d, AcGeVector2d } from '../math';
54
+ import { AcGeMathUtil, TAU } from '../util';
55
+ import { AcGeCurve2d } from './AcGeCurve2d';
56
+ /**
57
+ * Represent a circular arc.
58
+ */
59
+ var AcGeCircArc2d = /** @class */ (function (_super) {
60
+ __extends(AcGeCircArc2d, _super);
61
+ function AcGeCircArc2d(a, b, c, d, e) {
62
+ var _this = _super.call(this) || this;
63
+ var argsLength = +(a !== undefined) +
64
+ +(b !== undefined) +
65
+ +(c !== undefined) +
66
+ +(d !== undefined) +
67
+ +(e !== undefined);
68
+ if (argsLength == 3) {
69
+ if (typeof a == 'object' &&
70
+ typeof b == 'object' &&
71
+ typeof c == 'object') {
72
+ _this.createByThreePoints(a, b, c);
73
+ }
74
+ else {
75
+ _this.createByStartEndPointsAndBulge(a, b, c);
76
+ }
77
+ }
78
+ else if (argsLength == 5) {
79
+ var center = a;
80
+ _this.center = new AcGePoint2d(center.x, center.y);
81
+ _this.radius = b;
82
+ _this.startAngle = c;
83
+ _this.endAngle = d;
84
+ _this.clockwise = e;
85
+ }
86
+ else {
87
+ throw AcCmErrors.ILLEGAL_PARAMETERS;
88
+ }
89
+ return _this;
90
+ }
91
+ /**
92
+ * Create arc by three points
93
+ * @param p1 Input the start point
94
+ * @param p2 Input one point between the start point and the end point
95
+ * @param p3 Input the end point
96
+ */
97
+ AcGeCircArc2d.prototype.createByThreePoints = function (p1, p2, p3) {
98
+ var midpoint = function (p1, p2) { return ({
99
+ x: (p1.x + p2.x) / 2,
100
+ y: (p1.y + p2.y) / 2
101
+ }); };
102
+ var slope = function (p1, p2) {
103
+ return (p2.y - p1.y) / (p2.x - p1.x);
104
+ };
105
+ var perpSlope = function (m) { return -1 / m; };
106
+ var midpoint1 = midpoint(p1, p2);
107
+ var midpoint2 = midpoint(p2, p3);
108
+ var slope1 = slope(p1, p2);
109
+ var slope2 = slope(p2, p3);
110
+ var perpSlope1 = perpSlope(slope1);
111
+ var perpSlope2 = perpSlope(slope2);
112
+ var intersect = function (m1, b1, m2, b2) {
113
+ var x = (b2 - b1) / (m1 - m2);
114
+ var y = m1 * x + b1;
115
+ return { x: x, y: y };
116
+ };
117
+ var b1 = midpoint1.y - perpSlope1 * midpoint1.x;
118
+ var b2 = midpoint2.y - perpSlope2 * midpoint2.x;
119
+ var center = intersect(perpSlope1, b1, perpSlope2, b2);
120
+ var radius = Math.sqrt(Math.pow(p1.x - center.x, 2) + Math.pow(p1.y - center.y, 2));
121
+ var angle = function (p, center) {
122
+ return Math.atan2(p.y - center.y, p.x - center.x);
123
+ };
124
+ var startAngle = angle(p1, center);
125
+ var midAngle = angle(p2, center);
126
+ var endAngle = angle(p3, center);
127
+ var isCounterclockwise = (endAngle > startAngle && endAngle < midAngle) ||
128
+ (startAngle > endAngle && startAngle < midAngle) ||
129
+ (midAngle > endAngle && midAngle < startAngle);
130
+ this.center = center;
131
+ this.radius = radius;
132
+ this.startAngle = startAngle;
133
+ this.endAngle = endAngle;
134
+ this.clockwise = !isCounterclockwise;
135
+ };
136
+ /**
137
+ * Create circular arc by two points and one bugle factor
138
+ * @param from Input start point
139
+ * @param to Input end point
140
+ * @param bulge Input the bulge factor used to indicate how much of an arc segment is present at this
141
+ * vertex. The bulge factor is the tangent of one fourth the included angle for an arc segment, made
142
+ * negative if the arc goes clockwise from the start point to the endpoint. A bulge of 0 indicates a
143
+ * straight segment, and a bulge of 1 is a semicircle. Get more details from the following links.
144
+ * - https://ezdxf.readthedocs.io/en/stable/dxfentities/lwpolyline.html
145
+ * - https://www.afralisp.net/archive/lisp/Bulges1.htm
146
+ */
147
+ AcGeCircArc2d.prototype.createByStartEndPointsAndBulge = function (from, to, bulge) {
148
+ var theta;
149
+ var a;
150
+ var b;
151
+ if (bulge < 0) {
152
+ theta = Math.atan(-bulge) * 4;
153
+ a = new AcGeVector2d(from);
154
+ b = new AcGeVector2d(to);
155
+ }
156
+ else {
157
+ // Default is counter-clockwise
158
+ theta = Math.atan(bulge) * 4;
159
+ a = new AcGeVector2d(to);
160
+ b = new AcGeVector2d(from);
161
+ }
162
+ var ab = new AcGeVector2d().subVectors(b, a);
163
+ var lengthAB = ab.length();
164
+ var c = new AcGeVector2d().addVectors(a, ab.multiplyScalar(0.5));
165
+ // Distance from center of arc to line between form and to points
166
+ var lengthCD = Math.abs(lengthAB / 2 / Math.tan(theta / 2));
167
+ var normAB = ab.normalize();
168
+ var d;
169
+ if (theta < Math.PI) {
170
+ var normDC = new AcGeVector2d(normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2), normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2));
171
+ // d is the center of the arc
172
+ d = c.add(normDC.multiplyScalar(-lengthCD));
173
+ }
174
+ else {
175
+ var normCD = new AcGeVector2d(normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2), normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2));
176
+ // d is the center of the arc
177
+ d = c.add(normCD.multiplyScalar(lengthCD));
178
+ }
179
+ // Add points between start start and eng angle relative
180
+ // to the center point
181
+ if (bulge < 0) {
182
+ this.startAngle = Math.atan2(a.y - d.y, a.x - d.x);
183
+ this.endAngle = Math.atan2(b.y - d.y, b.x - d.x);
184
+ }
185
+ else {
186
+ this.startAngle = Math.atan2(b.y - d.y, b.x - d.x);
187
+ this.endAngle = Math.atan2(a.y - d.y, a.x - d.x);
188
+ }
189
+ this.clockwise = bulge < 0;
190
+ this.center = d;
191
+ this.radius = b.sub(d).length();
192
+ };
193
+ Object.defineProperty(AcGeCircArc2d.prototype, "center", {
194
+ /**
195
+ * Center of circular arc
196
+ */
197
+ get: function () {
198
+ return this._center;
199
+ },
200
+ set: function (value) {
201
+ this._center = new AcGePoint2d(value.x, value.y);
202
+ this._boundingBoxNeedsUpdate = true;
203
+ },
204
+ enumerable: false,
205
+ configurable: true
206
+ });
207
+ Object.defineProperty(AcGeCircArc2d.prototype, "radius", {
208
+ /**
209
+ * Radius of circular arc
210
+ */
211
+ get: function () {
212
+ return this._radius;
213
+ },
214
+ set: function (value) {
215
+ this._radius = value;
216
+ this._boundingBoxNeedsUpdate = true;
217
+ },
218
+ enumerable: false,
219
+ configurable: true
220
+ });
221
+ Object.defineProperty(AcGeCircArc2d.prototype, "startAngle", {
222
+ /**
223
+ * Start angle in radians of circular arc in the range 0 to 2 * PI.
224
+ */
225
+ get: function () {
226
+ return this._startAngle;
227
+ },
228
+ set: function (value) {
229
+ this._startAngle = AcGeMathUtil.normalizeAngle(value);
230
+ this._boundingBoxNeedsUpdate = true;
231
+ },
232
+ enumerable: false,
233
+ configurable: true
234
+ });
235
+ Object.defineProperty(AcGeCircArc2d.prototype, "endAngle", {
236
+ /**
237
+ * End angle in radians of circular arc in the range 0 to 2 * PI.
238
+ */
239
+ get: function () {
240
+ return this._endAngle;
241
+ },
242
+ set: function (value) {
243
+ this._endAngle =
244
+ this.startAngle == 0 && value == TAU
245
+ ? value
246
+ : AcGeMathUtil.normalizeAngle(value);
247
+ this._boundingBoxNeedsUpdate = true;
248
+ },
249
+ enumerable: false,
250
+ configurable: true
251
+ });
252
+ Object.defineProperty(AcGeCircArc2d.prototype, "deltaAngle", {
253
+ /**
254
+ * Angle between endAngle and startAngle in range 0 to 2*PI
255
+ */
256
+ get: function () {
257
+ return this.clockwise
258
+ ? AcGeMathUtil.normalizeAngle(this.startAngle - this.endAngle)
259
+ : AcGeMathUtil.normalizeAngle(this.endAngle - this.startAngle);
260
+ },
261
+ enumerable: false,
262
+ configurable: true
263
+ });
264
+ Object.defineProperty(AcGeCircArc2d.prototype, "clockwise", {
265
+ /**
266
+ * Rotation direction of the arc.
267
+ */
268
+ get: function () {
269
+ return this._clockwise;
270
+ },
271
+ set: function (value) {
272
+ this._clockwise = value;
273
+ this._boundingBoxNeedsUpdate = true;
274
+ },
275
+ enumerable: false,
276
+ configurable: true
277
+ });
278
+ Object.defineProperty(AcGeCircArc2d.prototype, "startPoint", {
279
+ /**
280
+ * Start point of circular arc
281
+ */
282
+ get: function () {
283
+ return this.getPointAtAngle(this.startAngle);
284
+ },
285
+ enumerable: false,
286
+ configurable: true
287
+ });
288
+ Object.defineProperty(AcGeCircArc2d.prototype, "endPoint", {
289
+ /**
290
+ * End point of circular arc
291
+ */
292
+ get: function () {
293
+ return this.getPointAtAngle(this.endAngle);
294
+ },
295
+ enumerable: false,
296
+ configurable: true
297
+ });
298
+ Object.defineProperty(AcGeCircArc2d.prototype, "midPoint", {
299
+ /**
300
+ * Middle point of circular arc
301
+ */
302
+ get: function () {
303
+ var midAngle = AcGeMathUtil.normalizeAngle((this.startAngle + this.endAngle) / 2);
304
+ return this.getPointAtAngle(midAngle);
305
+ },
306
+ enumerable: false,
307
+ configurable: true
308
+ });
309
+ Object.defineProperty(AcGeCircArc2d.prototype, "closed", {
310
+ /**
311
+ * Return true if its start point is identical to its end point. Otherwise, return false.
312
+ */
313
+ get: function () {
314
+ return (Math.abs(this.endAngle - this.startAngle) / Math.PI) % 2 == 0;
315
+ },
316
+ enumerable: false,
317
+ configurable: true
318
+ });
319
+ /**
320
+ * @inheritdoc
321
+ */
322
+ AcGeCircArc2d.prototype.calculateBoundingBox = function () {
323
+ var e_1, _a;
324
+ var points = [this.startPoint, this.endPoint];
325
+ var criticalAngles = [0, Math.PI / 2, Math.PI, (3 * Math.PI) / 2];
326
+ try {
327
+ for (var criticalAngles_1 = __values(criticalAngles), criticalAngles_1_1 = criticalAngles_1.next(); !criticalAngles_1_1.done; criticalAngles_1_1 = criticalAngles_1.next()) {
328
+ var angle = criticalAngles_1_1.value;
329
+ if (AcGeMathUtil.isBetweenAngle(angle, this.startAngle, this.endAngle, this.clockwise)) {
330
+ points.push(this.getPointAtAngle(angle));
331
+ }
332
+ }
333
+ }
334
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
335
+ finally {
336
+ try {
337
+ if (criticalAngles_1_1 && !criticalAngles_1_1.done && (_a = criticalAngles_1.return)) _a.call(criticalAngles_1);
338
+ }
339
+ finally { if (e_1) throw e_1.error; }
340
+ }
341
+ var xValues = points.map(function (p) { return p.x; });
342
+ var yValues = points.map(function (p) { return p.y; });
343
+ return new AcGeBox2d(new AcGePoint2d(Math.min.apply(Math, __spreadArray([], __read(xValues), false)), Math.min.apply(Math, __spreadArray([], __read(yValues), false))), new AcGePoint2d(Math.max.apply(Math, __spreadArray([], __read(xValues), false)), Math.max.apply(Math, __spreadArray([], __read(yValues), false))));
344
+ };
345
+ Object.defineProperty(AcGeCircArc2d.prototype, "length", {
346
+ /**
347
+ * Get length of circular arc
348
+ */
349
+ get: function () {
350
+ return Math.abs(this.deltaAngle * this.radius);
351
+ },
352
+ enumerable: false,
353
+ configurable: true
354
+ });
355
+ /**
356
+ * @inheritdoc
357
+ */
358
+ AcGeCircArc2d.prototype.transform = function (_matrix) {
359
+ // TODO: implement it
360
+ this._boundingBoxNeedsUpdate = true;
361
+ return this;
362
+ };
363
+ /**
364
+ * @inheritdoc
365
+ */
366
+ AcGeCircArc2d.prototype.clone = function () {
367
+ return new AcGeCircArc2d(this.center.clone(), this.radius, this.startAngle, this.endAngle, this.clockwise);
368
+ };
369
+ /**
370
+ * Calculate a point on the ellipse at a given angle.
371
+ * @param angle Input the angle in radians where the point is to be calculated.
372
+ * @returns Return the 2d coordinates of the point on the circular arc.
373
+ */
374
+ AcGeCircArc2d.prototype.getPointAtAngle = function (angle) {
375
+ var x = this.center.x + this.radius * Math.cos(angle);
376
+ var y = this.center.y + this.radius * Math.sin(angle);
377
+ return new AcGePoint2d(x, y);
378
+ };
379
+ /**
380
+ * Divide this arc into the specified nubmer of points and return those points as an array of points.
381
+ * @param numPoints Input the nubmer of points returned
382
+ * @returns Return an array of points
383
+ */
384
+ AcGeCircArc2d.prototype.getPoints = function (numPoints) {
385
+ if (numPoints === void 0) { numPoints = 100; }
386
+ var points = [];
387
+ var deltaAngle = this.deltaAngle;
388
+ var startAngle = this.startAngle;
389
+ if (this.closed) {
390
+ deltaAngle = TAU;
391
+ startAngle = 0;
392
+ }
393
+ if (this.clockwise) {
394
+ for (var i = 0; i <= numPoints; i++) {
395
+ var angle = startAngle - deltaAngle * (i / numPoints);
396
+ var point = this.getPointAtAngle(angle);
397
+ points.push(new AcGePoint2d(point.x, point.y));
398
+ }
399
+ }
400
+ else {
401
+ for (var i = 0; i <= numPoints; i++) {
402
+ var angle = startAngle + deltaAngle * (i / numPoints);
403
+ var point = this.getPointAtAngle(angle);
404
+ points.push(new AcGePoint2d(point.x, point.y));
405
+ }
406
+ }
407
+ return points;
408
+ };
409
+ return AcGeCircArc2d;
410
+ }(AcGeCurve2d));
411
+ export { AcGeCircArc2d };
412
+ //# sourceMappingURL=AcGeCircArc2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeCircArc2d.js","sourceRoot":"","sources":["../../src/geometry/AcGeCircArc2d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ import { AcGeBox3d, AcGeMatrix3d, AcGePlane, AcGePoint3d, AcGePoint3dLike, AcGePointLike, AcGeVector3d, AcGeVector3dLike } from '../math';
2
+ import { AcGeCurve3d } from './AcGeCurve3d';
3
+ /**
4
+ * The class represeting both full circles and circular arcs in 3d space. The ellipse arc is
5
+ * defined by a center point, radius, start angle, end angle, a normal vector, and a reference
6
+ * vector. If start angle is equal to 0 and end angle is equal to 2 * Math.PI, it represents
7
+ * a full circle.
8
+ */
9
+ export declare class AcGeCircArc3d extends AcGeCurve3d {
10
+ private _center;
11
+ private _radius;
12
+ private _startAngle;
13
+ private _endAngle;
14
+ private _normal;
15
+ private _refVec;
16
+ /**
17
+ * Compute center point of the arc given three points
18
+ * @param startPoint Input start point of the arc
19
+ * @param endPoint Input end point of the arc
20
+ * @param pointOnArc Input one point on the arc (P3)
21
+ * @returns Return center point of the arc
22
+ */
23
+ static computeCenterPoint(startPoint: AcGePoint3dLike, endPoint: AcGePoint3dLike, pointOnArc: AcGePoint3dLike): AcGePoint3d | null;
24
+ /**
25
+ * Create arc by three points
26
+ * @param startPoint Input the start point
27
+ * @param endPoint Input the end point
28
+ * @param pointOnArc Input one point between the start point and the end point
29
+ */
30
+ static createByThreePoints(startPoint: AcGePoint3dLike, endPoint: AcGePoint3dLike, pointOnArc: AcGePoint3dLike): AcGeCircArc3d | undefined;
31
+ /**
32
+ * Create a 3d circular arc.
33
+ * @param center The center point of the arc.
34
+ * @param radius The radius of the arc.
35
+ * @param startAngle The start angle of the arc.
36
+ * @param endAngle The end angle of the arc.
37
+ * @param normal The normal vector of the plane in which the arc lies.
38
+ * @param refVec The reference vector from which angles are measured. Default value is x axis.
39
+ */
40
+ constructor(center: AcGePointLike, radius: number, startAngle: number, endAngle: number, normal: AcGeVector3dLike, refVec?: AcGeVector3dLike);
41
+ /**
42
+ * Center of circular arc
43
+ */
44
+ get center(): AcGePoint3d;
45
+ set center(value: AcGePointLike);
46
+ /**
47
+ * Radius of circular arc
48
+ */
49
+ get radius(): number;
50
+ set radius(value: number);
51
+ /**
52
+ * Start angle in radians of circular arc in the range 0 to 2 * PI.
53
+ */
54
+ get startAngle(): number;
55
+ set startAngle(value: number);
56
+ /**
57
+ * End angle in radians of circular arc in the range 0 to 2 * PI.
58
+ */
59
+ get endAngle(): number;
60
+ set endAngle(value: number);
61
+ /**
62
+ * Return angle between endAngle and startAngle in range 0 to 2*PI
63
+ */
64
+ get deltaAngle(): number;
65
+ /**
66
+ * Return true if the arc is a large arc whose delta angle value is greater than PI.
67
+ */
68
+ get isLargeArc(): 0 | 1;
69
+ /**
70
+ * Return true if the arc is clockwise from startAngle to endAngle
71
+ */
72
+ get clockwise(): boolean;
73
+ /**
74
+ * Normal vector defining the plane of the circular arc
75
+ */
76
+ get normal(): AcGeVector3d;
77
+ set normal(value: AcGeVector3dLike);
78
+ /**
79
+ * The unit reference vector of circular arc
80
+ */
81
+ get refVec(): AcGeVector3d;
82
+ set refVec(value: AcGeVector3dLike);
83
+ /**
84
+ * The start point of circular arc
85
+ */
86
+ get startPoint(): AcGePoint3d;
87
+ /**
88
+ * The end point of circular arc
89
+ */
90
+ get endPoint(): AcGePoint3d;
91
+ /**
92
+ * @inheritdoc
93
+ */
94
+ get length(): number;
95
+ /**
96
+ * @inheritdoc
97
+ */
98
+ calculateBoundingBox(): AcGeBox3d;
99
+ /**
100
+ * Return true if its start point is identical to its end point. Otherwise, return false.
101
+ */
102
+ get closed(): boolean;
103
+ /**
104
+ * Divide this arc into the specified nubmer of points
105
+ * those points as an array of points.
106
+ * @param numPoints Input the nubmer of points returned
107
+ * @returns Return an array of point
108
+ */
109
+ getPoints(numPoints: number): AcGePoint3d[];
110
+ /**
111
+ * @inheritdoc
112
+ */
113
+ transform(matrix: AcGeMatrix3d): this;
114
+ /**
115
+ * @inheritdoc
116
+ */
117
+ copy(value: AcGeCircArc3d): this;
118
+ /**
119
+ * @inheritdoc
120
+ */
121
+ clone(): AcGeCircArc3d;
122
+ /**
123
+ * Calculate angle between the specified vec and the reference vector of this arc.
124
+ * @param vec Input one vector
125
+ * @returns Return angle between the specified vec and the reference vector of this arc.
126
+ */
127
+ getAngle(vec: AcGeVector3d): number;
128
+ /**
129
+ * Returns the point on the arc at a specific angle.
130
+ * @param angle The angle at which to get the point.
131
+ */
132
+ getPointAtAngle(angle: number): AcGePoint3d;
133
+ /**
134
+ * Return the plane in which the circular arc lies.
135
+ */
136
+ get plane(): AcGePlane;
137
+ }
138
+ //# sourceMappingURL=AcGeCircArc3d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeCircArc3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeCircArc3d.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,eAAe,EACf,aAAa,EACb,YAAY,EACZ,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAe;IAE9B;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CACvB,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,eAAe,GAC1B,WAAW,GAAG,IAAI;IAmDrB;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CACxB,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,eAAe;IA4B7B;;;;;;;;OAQG;gBAED,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,MAAM,GAAE,gBAAsC;IAmBhD;;OAEG;IACH,IAAI,MAAM,IAAI,WAAW,CAExB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,aAAa,EAG9B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAIvB;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;;OAEG;IACH,IAAI,MAAM,IAAI,YAAY,CAEzB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAKjC;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,WAAW,CAE5B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,WAAW,CAE1B;IAED;;OAEG;IACH,IAAI,MAAM,WAET;IAED;;OAEG;IACH,oBAAoB;IA+BpB;;OAEG;IACH,IAAI,MAAM,YAET;IAED;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAgB3C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY;IAsB9B;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,aAAa;IAWzB;;OAEG;IACH,KAAK;IAWL;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,YAAY;IAQ1B;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAuB3C;;OAEG;IACH,IAAI,KAAK,IAAI,SAAS,CAGrB;CACF"}