@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.
- package/LICENSE +21 -0
- package/README.md +13 -0
- package/dist/geometry-engine.js +10186 -0
- package/dist/geometry-engine.umd.cjs +4 -0
- package/lib/geometry/AcGeArea2d.d.ts +61 -0
- package/lib/geometry/AcGeArea2d.d.ts.map +1 -0
- package/lib/geometry/AcGeArea2d.js +174 -0
- package/lib/geometry/AcGeArea2d.js.map +1 -0
- package/lib/geometry/AcGeCircArc2d.d.ts +108 -0
- package/lib/geometry/AcGeCircArc2d.d.ts.map +1 -0
- package/lib/geometry/AcGeCircArc2d.js +412 -0
- package/lib/geometry/AcGeCircArc2d.js.map +1 -0
- package/lib/geometry/AcGeCircArc3d.d.ts +138 -0
- package/lib/geometry/AcGeCircArc3d.d.ts.map +1 -0
- package/lib/geometry/AcGeCircArc3d.js +447 -0
- package/lib/geometry/AcGeCircArc3d.js.map +1 -0
- package/lib/geometry/AcGeCurve2d.d.ts +85 -0
- package/lib/geometry/AcGeCurve2d.d.ts.map +1 -0
- package/lib/geometry/AcGeCurve2d.js +213 -0
- package/lib/geometry/AcGeCurve2d.js.map +1 -0
- package/lib/geometry/AcGeCurve3d.d.ts +27 -0
- package/lib/geometry/AcGeCurve3d.d.ts.map +1 -0
- package/lib/geometry/AcGeCurve3d.js +29 -0
- package/lib/geometry/AcGeCurve3d.js.map +1 -0
- package/lib/geometry/AcGeEllipseArc2d.d.ts +105 -0
- package/lib/geometry/AcGeEllipseArc2d.d.ts.map +1 -0
- package/lib/geometry/AcGeEllipseArc2d.js +292 -0
- package/lib/geometry/AcGeEllipseArc2d.js.map +1 -0
- package/lib/geometry/AcGeEllipseArc3d.d.ts +141 -0
- package/lib/geometry/AcGeEllipseArc3d.d.ts.map +1 -0
- package/lib/geometry/AcGeEllipseArc3d.js +442 -0
- package/lib/geometry/AcGeEllipseArc3d.js.map +1 -0
- package/lib/geometry/AcGeLine2d.d.ts +56 -0
- package/lib/geometry/AcGeLine2d.d.ts.map +1 -0
- package/lib/geometry/AcGeLine2d.js +125 -0
- package/lib/geometry/AcGeLine2d.js.map +1 -0
- package/lib/geometry/AcGeLine3d.d.ts +134 -0
- package/lib/geometry/AcGeLine3d.d.ts.map +1 -0
- package/lib/geometry/AcGeLine3d.js +291 -0
- package/lib/geometry/AcGeLine3d.js.map +1 -0
- package/lib/geometry/AcGeLoop2d.d.ts +59 -0
- package/lib/geometry/AcGeLoop2d.d.ts.map +1 -0
- package/lib/geometry/AcGeLoop2d.js +141 -0
- package/lib/geometry/AcGeLoop2d.js.map +1 -0
- package/lib/geometry/AcGePolyline2d.d.ts +90 -0
- package/lib/geometry/AcGePolyline2d.d.ts.map +1 -0
- package/lib/geometry/AcGePolyline2d.js +224 -0
- package/lib/geometry/AcGePolyline2d.js.map +1 -0
- package/lib/geometry/AcGeShape.d.ts +12 -0
- package/lib/geometry/AcGeShape.d.ts.map +1 -0
- package/lib/geometry/AcGeShape.js +22 -0
- package/lib/geometry/AcGeShape.js.map +1 -0
- package/lib/geometry/AcGeShape2d.d.ts +31 -0
- package/lib/geometry/AcGeShape2d.d.ts.map +1 -0
- package/lib/geometry/AcGeShape2d.js +51 -0
- package/lib/geometry/AcGeShape2d.js.map +1 -0
- package/lib/geometry/AcGeShape3d.d.ts +33 -0
- package/lib/geometry/AcGeShape3d.d.ts.map +1 -0
- package/lib/geometry/AcGeShape3d.js +52 -0
- package/lib/geometry/AcGeShape3d.js.map +1 -0
- package/lib/geometry/AcGeSpline3d.d.ts +77 -0
- package/lib/geometry/AcGeSpline3d.d.ts.map +1 -0
- package/lib/geometry/AcGeSpline3d.js +221 -0
- package/lib/geometry/AcGeSpline3d.js.map +1 -0
- package/lib/geometry/index.d.ts +13 -0
- package/lib/geometry/index.d.ts.map +1 -0
- package/lib/geometry/index.js +13 -0
- package/lib/geometry/index.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -0
- package/lib/math/AcGeBox2d.d.ts +173 -0
- package/lib/math/AcGeBox2d.d.ts.map +1 -0
- package/lib/math/AcGeBox2d.js +289 -0
- package/lib/math/AcGeBox2d.js.map +1 -0
- package/lib/math/AcGeBox3d.d.ts +195 -0
- package/lib/math/AcGeBox3d.d.ts.map +1 -0
- package/lib/math/AcGeBox3d.js +378 -0
- package/lib/math/AcGeBox3d.js.map +1 -0
- package/lib/math/AcGeEuler.d.ts +133 -0
- package/lib/math/AcGeEuler.d.ts.map +1 -0
- package/lib/math/AcGeEuler.js +358 -0
- package/lib/math/AcGeEuler.js.map +1 -0
- package/lib/math/AcGeMatrix2d.d.ts +203 -0
- package/lib/math/AcGeMatrix2d.d.ts.map +1 -0
- package/lib/math/AcGeMatrix2d.js +393 -0
- package/lib/math/AcGeMatrix2d.js.map +1 -0
- package/lib/math/AcGeMatrix3d.d.ts +279 -0
- package/lib/math/AcGeMatrix3d.d.ts.map +1 -0
- package/lib/math/AcGeMatrix3d.js +1037 -0
- package/lib/math/AcGeMatrix3d.js.map +1 -0
- package/lib/math/AcGePlane.d.ts +131 -0
- package/lib/math/AcGePlane.d.ts.map +1 -0
- package/lib/math/AcGePlane.js +218 -0
- package/lib/math/AcGePlane.js.map +1 -0
- package/lib/math/AcGePoint.d.ts +4 -0
- package/lib/math/AcGePoint.d.ts.map +1 -0
- package/lib/math/AcGePoint.js +2 -0
- package/lib/math/AcGePoint.js.map +1 -0
- package/lib/math/AcGePoint2d.d.ts +17 -0
- package/lib/math/AcGePoint2d.d.ts.map +1 -0
- package/lib/math/AcGePoint2d.js +40 -0
- package/lib/math/AcGePoint2d.js.map +1 -0
- package/lib/math/AcGePoint3d.d.ts +18 -0
- package/lib/math/AcGePoint3d.d.ts.map +1 -0
- package/lib/math/AcGePoint3d.js +43 -0
- package/lib/math/AcGePoint3d.js.map +1 -0
- package/lib/math/AcGeQuaternion.d.ts +230 -0
- package/lib/math/AcGeQuaternion.d.ts.map +1 -0
- package/lib/math/AcGeQuaternion.js +666 -0
- package/lib/math/AcGeQuaternion.js.map +1 -0
- package/lib/math/AcGeVector.d.ts +9 -0
- package/lib/math/AcGeVector.d.ts.map +1 -0
- package/lib/math/AcGeVector.js +2 -0
- package/lib/math/AcGeVector.js.map +1 -0
- package/lib/math/AcGeVector2d.d.ts +361 -0
- package/lib/math/AcGeVector2d.d.ts.map +1 -0
- package/lib/math/AcGeVector2d.js +622 -0
- package/lib/math/AcGeVector2d.js.map +1 -0
- package/lib/math/AcGeVector3d.d.ts +493 -0
- package/lib/math/AcGeVector3d.d.ts.map +1 -0
- package/lib/math/AcGeVector3d.js +868 -0
- package/lib/math/AcGeVector3d.js.map +1 -0
- package/lib/math/index.d.ts +14 -0
- package/lib/math/index.d.ts.map +1 -0
- package/lib/math/index.js +14 -0
- package/lib/math/index.js.map +1 -0
- package/lib/util/AcGeConstants.d.ts +19 -0
- package/lib/util/AcGeConstants.d.ts.map +1 -0
- package/lib/util/AcGeConstants.js +25 -0
- package/lib/util/AcGeConstants.js.map +1 -0
- package/lib/util/AcGeGeometryUtil.d.ts +16 -0
- package/lib/util/AcGeGeometryUtil.d.ts.map +1 -0
- package/lib/util/AcGeGeometryUtil.js +56 -0
- package/lib/util/AcGeGeometryUtil.js.map +1 -0
- package/lib/util/AcGeMathUtil.d.ts +203 -0
- package/lib/util/AcGeMathUtil.d.ts.map +1 -0
- package/lib/util/AcGeMathUtil.js +585 -0
- package/lib/util/AcGeMathUtil.js.map +1 -0
- package/lib/util/AcGeTol.d.ts +91 -0
- package/lib/util/AcGeTol.d.ts.map +1 -0
- package/lib/util/AcGeTol.js +83 -0
- package/lib/util/AcGeTol.js.map +1 -0
- package/lib/util/index.d.ts +5 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/index.js +5 -0
- package/lib/util/index.js.map +1 -0
- 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":"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"}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import { AcGeBox2d, AcGeMatrix2d, AcGePoint2d, AcGePoint2dLike } from '../math';
|
2
|
+
import { AcGeCurve2d } from './AcGeCurve2d';
|
3
|
+
/**
|
4
|
+
* The class represents one 3d line geometry specified by its start point and end point.
|
5
|
+
*/
|
6
|
+
export declare class AcGeLine2d extends AcGeCurve2d {
|
7
|
+
private _start;
|
8
|
+
private _end;
|
9
|
+
/**
|
10
|
+
* This constructor initializes the line object to use start as the start point, and end
|
11
|
+
* as the endpoint. Both points must be in WCS coordinates.
|
12
|
+
*/
|
13
|
+
constructor(start: AcGePoint2dLike, end: AcGePoint2dLike);
|
14
|
+
/**
|
15
|
+
* The line's startpoint in WCS coordinates
|
16
|
+
* @returns Return the line's startpoint in WCS coordinates.
|
17
|
+
*/
|
18
|
+
get startPoint(): AcGePoint2d;
|
19
|
+
set startPoint(value: AcGePoint2dLike);
|
20
|
+
/**
|
21
|
+
* The line's endpoint in WCS coordinates
|
22
|
+
* @returns Return the line's endpoint in WCS coordinates.
|
23
|
+
*/
|
24
|
+
get endPoint(): AcGePoint2d;
|
25
|
+
set endPoint(value: AcGePoint2dLike);
|
26
|
+
/**
|
27
|
+
* Convert line to a point array with start point and end point.
|
28
|
+
* @returns Return an array of point
|
29
|
+
*/
|
30
|
+
getPoints(): AcGePoint2d[];
|
31
|
+
/**
|
32
|
+
* @inheritdoc
|
33
|
+
*/
|
34
|
+
get length(): number;
|
35
|
+
/**
|
36
|
+
* @inheritdoc
|
37
|
+
*/
|
38
|
+
calculateBoundingBox(): AcGeBox2d;
|
39
|
+
/**
|
40
|
+
* @inheritdoc
|
41
|
+
*/
|
42
|
+
transform(matrix: AcGeMatrix2d): this;
|
43
|
+
/**
|
44
|
+
* @inheritdoc
|
45
|
+
*/
|
46
|
+
get closed(): boolean;
|
47
|
+
/**
|
48
|
+
* @inheritdoc
|
49
|
+
*/
|
50
|
+
copy(value: AcGeLine2d): this;
|
51
|
+
/**
|
52
|
+
* @inheritdoc
|
53
|
+
*/
|
54
|
+
clone(): AcGeLine2d;
|
55
|
+
}
|
56
|
+
//# sourceMappingURL=AcGeLine2d.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AcGeLine2d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeLine2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,IAAI,CAAa;IACzB;;;OAGG;gBACS,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe;IAMxD;;;OAGG;IACH,IAAI,UAAU,IAAI,WAAW,CAE5B;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,eAAe,EAGpC;IAED;;;OAGG;IACH,IAAI,QAAQ,IAAI,WAAW,CAE1B;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,eAAe,EAGlC;IAED;;;OAGG;IACH,SAAS,IAAI,WAAW,EAAE;IAI1B;;OAEG;IACH,IAAI,MAAM,WAET;IAED;;OAEG;IACH,oBAAoB,IAAI,SAAS;IAYjC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY;IAO9B;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU;IAOtB;;OAEG;IACH,KAAK;CAGN"}
|
@@ -0,0 +1,125 @@
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
2
|
+
var extendStatics = function (d, b) {
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
6
|
+
return extendStatics(d, b);
|
7
|
+
};
|
8
|
+
return function (d, b) {
|
9
|
+
if (typeof b !== "function" && b !== null)
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
11
|
+
extendStatics(d, b);
|
12
|
+
function __() { this.constructor = d; }
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
14
|
+
};
|
15
|
+
})();
|
16
|
+
import { AcGeBox2d, AcGePoint2d } from '../math';
|
17
|
+
import { AcGeCurve2d } from './AcGeCurve2d';
|
18
|
+
/**
|
19
|
+
* The class represents one 3d line geometry specified by its start point and end point.
|
20
|
+
*/
|
21
|
+
var AcGeLine2d = /** @class */ (function (_super) {
|
22
|
+
__extends(AcGeLine2d, _super);
|
23
|
+
/**
|
24
|
+
* This constructor initializes the line object to use start as the start point, and end
|
25
|
+
* as the endpoint. Both points must be in WCS coordinates.
|
26
|
+
*/
|
27
|
+
function AcGeLine2d(start, end) {
|
28
|
+
var _this = _super.call(this) || this;
|
29
|
+
_this._start = new AcGePoint2d(start);
|
30
|
+
_this._end = new AcGePoint2d(end);
|
31
|
+
return _this;
|
32
|
+
}
|
33
|
+
Object.defineProperty(AcGeLine2d.prototype, "startPoint", {
|
34
|
+
/**
|
35
|
+
* The line's startpoint in WCS coordinates
|
36
|
+
* @returns Return the line's startpoint in WCS coordinates.
|
37
|
+
*/
|
38
|
+
get: function () {
|
39
|
+
return this._start;
|
40
|
+
},
|
41
|
+
set: function (value) {
|
42
|
+
this._start.copy(value);
|
43
|
+
this._boundingBoxNeedsUpdate = true;
|
44
|
+
},
|
45
|
+
enumerable: false,
|
46
|
+
configurable: true
|
47
|
+
});
|
48
|
+
Object.defineProperty(AcGeLine2d.prototype, "endPoint", {
|
49
|
+
/**
|
50
|
+
* The line's endpoint in WCS coordinates
|
51
|
+
* @returns Return the line's endpoint in WCS coordinates.
|
52
|
+
*/
|
53
|
+
get: function () {
|
54
|
+
return this._end;
|
55
|
+
},
|
56
|
+
set: function (value) {
|
57
|
+
this._end.copy(value);
|
58
|
+
this._boundingBoxNeedsUpdate = true;
|
59
|
+
},
|
60
|
+
enumerable: false,
|
61
|
+
configurable: true
|
62
|
+
});
|
63
|
+
/**
|
64
|
+
* Convert line to a point array with start point and end point.
|
65
|
+
* @returns Return an array of point
|
66
|
+
*/
|
67
|
+
AcGeLine2d.prototype.getPoints = function () {
|
68
|
+
return [this.startPoint, this.endPoint];
|
69
|
+
};
|
70
|
+
Object.defineProperty(AcGeLine2d.prototype, "length", {
|
71
|
+
/**
|
72
|
+
* @inheritdoc
|
73
|
+
*/
|
74
|
+
get: function () {
|
75
|
+
return this.startPoint.distanceTo(this.endPoint);
|
76
|
+
},
|
77
|
+
enumerable: false,
|
78
|
+
configurable: true
|
79
|
+
});
|
80
|
+
/**
|
81
|
+
* @inheritdoc
|
82
|
+
*/
|
83
|
+
AcGeLine2d.prototype.calculateBoundingBox = function () {
|
84
|
+
var min = new AcGePoint2d(Math.min(this._start.x, this._end.x), Math.min(this._start.y, this._end.y));
|
85
|
+
var max = new AcGePoint2d(Math.max(this._start.x, this._end.x), Math.max(this._start.y, this._end.y));
|
86
|
+
return new AcGeBox2d(min, max);
|
87
|
+
};
|
88
|
+
/**
|
89
|
+
* @inheritdoc
|
90
|
+
*/
|
91
|
+
AcGeLine2d.prototype.transform = function (matrix) {
|
92
|
+
this._start.applyMatrix2d(matrix);
|
93
|
+
this._end.applyMatrix2d(matrix);
|
94
|
+
this._boundingBoxNeedsUpdate = true;
|
95
|
+
return this;
|
96
|
+
};
|
97
|
+
Object.defineProperty(AcGeLine2d.prototype, "closed", {
|
98
|
+
/**
|
99
|
+
* @inheritdoc
|
100
|
+
*/
|
101
|
+
get: function () {
|
102
|
+
return false;
|
103
|
+
},
|
104
|
+
enumerable: false,
|
105
|
+
configurable: true
|
106
|
+
});
|
107
|
+
/**
|
108
|
+
* @inheritdoc
|
109
|
+
*/
|
110
|
+
AcGeLine2d.prototype.copy = function (value) {
|
111
|
+
this.startPoint = value.startPoint;
|
112
|
+
this.endPoint = value.endPoint;
|
113
|
+
this._boundingBoxNeedsUpdate = true;
|
114
|
+
return this;
|
115
|
+
};
|
116
|
+
/**
|
117
|
+
* @inheritdoc
|
118
|
+
*/
|
119
|
+
AcGeLine2d.prototype.clone = function () {
|
120
|
+
return new AcGeLine2d(this._start.clone(), this._end.clone());
|
121
|
+
};
|
122
|
+
return AcGeLine2d;
|
123
|
+
}(AcGeCurve2d));
|
124
|
+
export { AcGeLine2d };
|
125
|
+
//# sourceMappingURL=AcGeLine2d.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AcGeLine2d.js","sourceRoot":"","sources":["../../src/geometry/AcGeLine2d.ts"],"names":[],"mappings":"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"}
|