@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,585 @@
|
|
1
|
+
var _lut = [
|
2
|
+
'00',
|
3
|
+
'01',
|
4
|
+
'02',
|
5
|
+
'03',
|
6
|
+
'04',
|
7
|
+
'05',
|
8
|
+
'06',
|
9
|
+
'07',
|
10
|
+
'08',
|
11
|
+
'09',
|
12
|
+
'0a',
|
13
|
+
'0b',
|
14
|
+
'0c',
|
15
|
+
'0d',
|
16
|
+
'0e',
|
17
|
+
'0f',
|
18
|
+
'10',
|
19
|
+
'11',
|
20
|
+
'12',
|
21
|
+
'13',
|
22
|
+
'14',
|
23
|
+
'15',
|
24
|
+
'16',
|
25
|
+
'17',
|
26
|
+
'18',
|
27
|
+
'19',
|
28
|
+
'1a',
|
29
|
+
'1b',
|
30
|
+
'1c',
|
31
|
+
'1d',
|
32
|
+
'1e',
|
33
|
+
'1f',
|
34
|
+
'20',
|
35
|
+
'21',
|
36
|
+
'22',
|
37
|
+
'23',
|
38
|
+
'24',
|
39
|
+
'25',
|
40
|
+
'26',
|
41
|
+
'27',
|
42
|
+
'28',
|
43
|
+
'29',
|
44
|
+
'2a',
|
45
|
+
'2b',
|
46
|
+
'2c',
|
47
|
+
'2d',
|
48
|
+
'2e',
|
49
|
+
'2f',
|
50
|
+
'30',
|
51
|
+
'31',
|
52
|
+
'32',
|
53
|
+
'33',
|
54
|
+
'34',
|
55
|
+
'35',
|
56
|
+
'36',
|
57
|
+
'37',
|
58
|
+
'38',
|
59
|
+
'39',
|
60
|
+
'3a',
|
61
|
+
'3b',
|
62
|
+
'3c',
|
63
|
+
'3d',
|
64
|
+
'3e',
|
65
|
+
'3f',
|
66
|
+
'40',
|
67
|
+
'41',
|
68
|
+
'42',
|
69
|
+
'43',
|
70
|
+
'44',
|
71
|
+
'45',
|
72
|
+
'46',
|
73
|
+
'47',
|
74
|
+
'48',
|
75
|
+
'49',
|
76
|
+
'4a',
|
77
|
+
'4b',
|
78
|
+
'4c',
|
79
|
+
'4d',
|
80
|
+
'4e',
|
81
|
+
'4f',
|
82
|
+
'50',
|
83
|
+
'51',
|
84
|
+
'52',
|
85
|
+
'53',
|
86
|
+
'54',
|
87
|
+
'55',
|
88
|
+
'56',
|
89
|
+
'57',
|
90
|
+
'58',
|
91
|
+
'59',
|
92
|
+
'5a',
|
93
|
+
'5b',
|
94
|
+
'5c',
|
95
|
+
'5d',
|
96
|
+
'5e',
|
97
|
+
'5f',
|
98
|
+
'60',
|
99
|
+
'61',
|
100
|
+
'62',
|
101
|
+
'63',
|
102
|
+
'64',
|
103
|
+
'65',
|
104
|
+
'66',
|
105
|
+
'67',
|
106
|
+
'68',
|
107
|
+
'69',
|
108
|
+
'6a',
|
109
|
+
'6b',
|
110
|
+
'6c',
|
111
|
+
'6d',
|
112
|
+
'6e',
|
113
|
+
'6f',
|
114
|
+
'70',
|
115
|
+
'71',
|
116
|
+
'72',
|
117
|
+
'73',
|
118
|
+
'74',
|
119
|
+
'75',
|
120
|
+
'76',
|
121
|
+
'77',
|
122
|
+
'78',
|
123
|
+
'79',
|
124
|
+
'7a',
|
125
|
+
'7b',
|
126
|
+
'7c',
|
127
|
+
'7d',
|
128
|
+
'7e',
|
129
|
+
'7f',
|
130
|
+
'80',
|
131
|
+
'81',
|
132
|
+
'82',
|
133
|
+
'83',
|
134
|
+
'84',
|
135
|
+
'85',
|
136
|
+
'86',
|
137
|
+
'87',
|
138
|
+
'88',
|
139
|
+
'89',
|
140
|
+
'8a',
|
141
|
+
'8b',
|
142
|
+
'8c',
|
143
|
+
'8d',
|
144
|
+
'8e',
|
145
|
+
'8f',
|
146
|
+
'90',
|
147
|
+
'91',
|
148
|
+
'92',
|
149
|
+
'93',
|
150
|
+
'94',
|
151
|
+
'95',
|
152
|
+
'96',
|
153
|
+
'97',
|
154
|
+
'98',
|
155
|
+
'99',
|
156
|
+
'9a',
|
157
|
+
'9b',
|
158
|
+
'9c',
|
159
|
+
'9d',
|
160
|
+
'9e',
|
161
|
+
'9f',
|
162
|
+
'a0',
|
163
|
+
'a1',
|
164
|
+
'a2',
|
165
|
+
'a3',
|
166
|
+
'a4',
|
167
|
+
'a5',
|
168
|
+
'a6',
|
169
|
+
'a7',
|
170
|
+
'a8',
|
171
|
+
'a9',
|
172
|
+
'aa',
|
173
|
+
'ab',
|
174
|
+
'ac',
|
175
|
+
'ad',
|
176
|
+
'ae',
|
177
|
+
'af',
|
178
|
+
'b0',
|
179
|
+
'b1',
|
180
|
+
'b2',
|
181
|
+
'b3',
|
182
|
+
'b4',
|
183
|
+
'b5',
|
184
|
+
'b6',
|
185
|
+
'b7',
|
186
|
+
'b8',
|
187
|
+
'b9',
|
188
|
+
'ba',
|
189
|
+
'bb',
|
190
|
+
'bc',
|
191
|
+
'bd',
|
192
|
+
'be',
|
193
|
+
'bf',
|
194
|
+
'c0',
|
195
|
+
'c1',
|
196
|
+
'c2',
|
197
|
+
'c3',
|
198
|
+
'c4',
|
199
|
+
'c5',
|
200
|
+
'c6',
|
201
|
+
'c7',
|
202
|
+
'c8',
|
203
|
+
'c9',
|
204
|
+
'ca',
|
205
|
+
'cb',
|
206
|
+
'cc',
|
207
|
+
'cd',
|
208
|
+
'ce',
|
209
|
+
'cf',
|
210
|
+
'd0',
|
211
|
+
'd1',
|
212
|
+
'd2',
|
213
|
+
'd3',
|
214
|
+
'd4',
|
215
|
+
'd5',
|
216
|
+
'd6',
|
217
|
+
'd7',
|
218
|
+
'd8',
|
219
|
+
'd9',
|
220
|
+
'da',
|
221
|
+
'db',
|
222
|
+
'dc',
|
223
|
+
'dd',
|
224
|
+
'de',
|
225
|
+
'df',
|
226
|
+
'e0',
|
227
|
+
'e1',
|
228
|
+
'e2',
|
229
|
+
'e3',
|
230
|
+
'e4',
|
231
|
+
'e5',
|
232
|
+
'e6',
|
233
|
+
'e7',
|
234
|
+
'e8',
|
235
|
+
'e9',
|
236
|
+
'ea',
|
237
|
+
'eb',
|
238
|
+
'ec',
|
239
|
+
'ed',
|
240
|
+
'ee',
|
241
|
+
'ef',
|
242
|
+
'f0',
|
243
|
+
'f1',
|
244
|
+
'f2',
|
245
|
+
'f3',
|
246
|
+
'f4',
|
247
|
+
'f5',
|
248
|
+
'f6',
|
249
|
+
'f7',
|
250
|
+
'f8',
|
251
|
+
'f9',
|
252
|
+
'fa',
|
253
|
+
'fb',
|
254
|
+
'fc',
|
255
|
+
'fd',
|
256
|
+
'fe',
|
257
|
+
'ff'
|
258
|
+
];
|
259
|
+
var _seed = 1234567;
|
260
|
+
var DEG2RAD = Math.PI / 180;
|
261
|
+
var RAD2DEG = 180 / Math.PI;
|
262
|
+
/**
|
263
|
+
* Generate a UUID (universally unique identifier).
|
264
|
+
* http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
|
265
|
+
* @returns Return a UUID
|
266
|
+
*/
|
267
|
+
function generateUUID() {
|
268
|
+
var d0 = (Math.random() * 0xffffffff) | 0;
|
269
|
+
var d1 = (Math.random() * 0xffffffff) | 0;
|
270
|
+
var d2 = (Math.random() * 0xffffffff) | 0;
|
271
|
+
var d3 = (Math.random() * 0xffffffff) | 0;
|
272
|
+
var uuid = _lut[d0 & 0xff] +
|
273
|
+
_lut[(d0 >> 8) & 0xff] +
|
274
|
+
_lut[(d0 >> 16) & 0xff] +
|
275
|
+
_lut[(d0 >> 24) & 0xff] +
|
276
|
+
'-' +
|
277
|
+
_lut[d1 & 0xff] +
|
278
|
+
_lut[(d1 >> 8) & 0xff] +
|
279
|
+
'-' +
|
280
|
+
_lut[((d1 >> 16) & 0x0f) | 0x40] +
|
281
|
+
_lut[(d1 >> 24) & 0xff] +
|
282
|
+
'-' +
|
283
|
+
_lut[(d2 & 0x3f) | 0x80] +
|
284
|
+
_lut[(d2 >> 8) & 0xff] +
|
285
|
+
'-' +
|
286
|
+
_lut[(d2 >> 16) & 0xff] +
|
287
|
+
_lut[(d2 >> 24) & 0xff] +
|
288
|
+
_lut[d3 & 0xff] +
|
289
|
+
_lut[(d3 >> 8) & 0xff] +
|
290
|
+
_lut[(d3 >> 16) & 0xff] +
|
291
|
+
_lut[(d3 >> 24) & 0xff];
|
292
|
+
// .toLowerCase() here flattens concatenated strings to save heap memory space.
|
293
|
+
return uuid.toLowerCase();
|
294
|
+
}
|
295
|
+
/**
|
296
|
+
* Clamp the value to be between min and max.
|
297
|
+
* @param value Input value to be clamped
|
298
|
+
* @param min Input minimum value
|
299
|
+
* @param max Input maximum value
|
300
|
+
* @returns Return clamped value between min and max
|
301
|
+
*/
|
302
|
+
function clamp(value, min, max) {
|
303
|
+
return Math.max(min, Math.min(max, value));
|
304
|
+
}
|
305
|
+
/**
|
306
|
+
* Computes the Euclidean modulo of m % n, that is: ((n % m) + m) % m
|
307
|
+
* https://en.wikipedia.org/wiki/Modulo_operation
|
308
|
+
* @param n Input one integer
|
309
|
+
* @param m Input one integer
|
310
|
+
* @returns Return the Euclidean modulo of m % n
|
311
|
+
*/
|
312
|
+
function euclideanModulo(n, m) {
|
313
|
+
return ((n % m) + m) % m;
|
314
|
+
}
|
315
|
+
/**
|
316
|
+
* Linear mapping of x from range [a1, a2] to range [b1, b2].
|
317
|
+
* @param x Input value to be mapped.
|
318
|
+
* @param a1 Input minimum value for range A.
|
319
|
+
* @param a2 Input maximum value for range A.
|
320
|
+
* @param b1 Input minimum value for range B.
|
321
|
+
* @param b2 Input maximum value for range B.
|
322
|
+
* @returns Return linear mapping of x from range [a1, a2] to range [b1, b2]
|
323
|
+
*/
|
324
|
+
function mapLinear(x, a1, a2, b1, b2) {
|
325
|
+
return b1 + ((x - a1) * (b2 - b1)) / (a2 - a1);
|
326
|
+
}
|
327
|
+
/**
|
328
|
+
* Return the percentage in the closed interval [0, 1] of the given value between the start and end point.
|
329
|
+
* https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/
|
330
|
+
* @param x Input start point
|
331
|
+
* @param y Input end point
|
332
|
+
* @param value Input a value between start and end
|
333
|
+
* @returns Return the percentage in the closed interval [0, 1] of the given value between the start and end point.
|
334
|
+
*/
|
335
|
+
function inverseLerp(x, y, value) {
|
336
|
+
if (x !== y) {
|
337
|
+
return (value - x) / (y - x);
|
338
|
+
}
|
339
|
+
else {
|
340
|
+
return 0;
|
341
|
+
}
|
342
|
+
}
|
343
|
+
/**
|
344
|
+
* Returns a value linearly interpolated from two known points based on the given interval - t = 0 will
|
345
|
+
* return x and t = 1 will return y.
|
346
|
+
* https://en.wikipedia.org/wiki/Linear_interpolation
|
347
|
+
* @param x Input start point
|
348
|
+
* @param y Input end point
|
349
|
+
* @param t Input interpolation factor in the closed interval [0, 1]
|
350
|
+
* @returns Return a value linearly interpolated from two known points
|
351
|
+
*/
|
352
|
+
function lerp(x, y, t) {
|
353
|
+
return (1 - t) * x + t * y;
|
354
|
+
}
|
355
|
+
/**
|
356
|
+
* Smoothly interpolate a number from x toward y in a spring-like manner using the dt to maintain frame
|
357
|
+
* rate independent movement. For details, see Frame rate independent damping using lerp.
|
358
|
+
* http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/
|
359
|
+
* @param x Input current point.
|
360
|
+
* @param y Input target point.
|
361
|
+
* @param lambda A higher lambda value will make the movement more sudden, and a lower value will make
|
362
|
+
* the movement more gradual.
|
363
|
+
* @param dt Input delta time in seconds.
|
364
|
+
* @returns Return a number from x toward y
|
365
|
+
*/
|
366
|
+
function damp(x, y, lambda, dt) {
|
367
|
+
return lerp(x, y, 1 - Math.exp(-lambda * dt));
|
368
|
+
}
|
369
|
+
/**
|
370
|
+
* Return a value that alternates between 0 and length.
|
371
|
+
* https://www.desmos.com/calculator/vcsjnyz7x4
|
372
|
+
* @param x Input the value to pingpong.
|
373
|
+
* @param length The positive value the function will pingpong to. Default is 1.
|
374
|
+
* @returns Return a value that alternates between 0 and length : Float.
|
375
|
+
*/
|
376
|
+
function pingpong(x, length) {
|
377
|
+
if (length === void 0) { length = 1; }
|
378
|
+
return length - Math.abs(euclideanModulo(x, length * 2) - length);
|
379
|
+
}
|
380
|
+
/**
|
381
|
+
* Return a value between 0-1. A variation on smoothstep that has zero 1st and 2nd order derivatives
|
382
|
+
* at x=0 and x=1.
|
383
|
+
* http://en.wikipedia.org/wiki/Smoothstep
|
384
|
+
* @param x Input the value to evaluate based on its position between min and max.
|
385
|
+
* @param min Any x value below min will be 0.
|
386
|
+
* @param max Any x value above max will be 1.
|
387
|
+
* @returns Return a value between 0-1
|
388
|
+
*/
|
389
|
+
function smoothstep(x, min, max) {
|
390
|
+
if (x <= min)
|
391
|
+
return 0;
|
392
|
+
if (x >= max)
|
393
|
+
return 1;
|
394
|
+
x = (x - min) / (max - min);
|
395
|
+
return x * x * (3 - 2 * x);
|
396
|
+
}
|
397
|
+
/**
|
398
|
+
* Return a value between 0-1. A variation on smoothstep that has zero 1st and 2nd order derivatives
|
399
|
+
* at x=0 and x=1.
|
400
|
+
* @param x Input the value to evaluate based on its position between min and max.
|
401
|
+
* @param min Any x value below min will be 0.
|
402
|
+
* @param max Any x value above max will be 1.
|
403
|
+
* @returns Return a value between 0-1
|
404
|
+
*/
|
405
|
+
function smootherstep(x, min, max) {
|
406
|
+
if (x <= min)
|
407
|
+
return 0;
|
408
|
+
if (x >= max)
|
409
|
+
return 1;
|
410
|
+
x = (x - min) / (max - min);
|
411
|
+
return x * x * x * (x * (x * 6 - 15) + 10);
|
412
|
+
}
|
413
|
+
/**
|
414
|
+
* Random integer in the interval [low, high].
|
415
|
+
* @param low Input interval lower boundary value
|
416
|
+
* @param high Input interval upper boundary value
|
417
|
+
* @returns Return random integer in the interval [low, high].
|
418
|
+
*/
|
419
|
+
function randInt(low, high) {
|
420
|
+
return low + Math.floor(Math.random() * (high - low + 1));
|
421
|
+
}
|
422
|
+
/**
|
423
|
+
* Random float in the interval [low, high].
|
424
|
+
* @param low Input interval lower boundary value
|
425
|
+
* @param high Input interval upper boundary value
|
426
|
+
* @returns Return random float in the interval [low, high]
|
427
|
+
*/
|
428
|
+
// Random float from <low, high> interval
|
429
|
+
function randFloat(low, high) {
|
430
|
+
return low + Math.random() * (high - low);
|
431
|
+
}
|
432
|
+
/**
|
433
|
+
* Random float in the interval [- range / 2, range / 2].
|
434
|
+
* @param range Input interval range value
|
435
|
+
* @returns Return random float in the interval [- range / 2, range / 2].
|
436
|
+
*/
|
437
|
+
function randFloatSpread(range) {
|
438
|
+
return range * (0.5 - Math.random());
|
439
|
+
}
|
440
|
+
/**
|
441
|
+
* Deterministic pseudo-random float in the interval [0, 1]. The integer seed is optional.
|
442
|
+
* @param s Input one integer seed number
|
443
|
+
* @returns Return pseudo-random float in the interval [0, 1]
|
444
|
+
*/
|
445
|
+
function seededRandom(s) {
|
446
|
+
if (s !== undefined)
|
447
|
+
_seed = s;
|
448
|
+
// Mulberry32 generator
|
449
|
+
var t = (_seed += 0x6d2b79f5);
|
450
|
+
t = Math.imul(t ^ (t >>> 15), t | 1);
|
451
|
+
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
|
452
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
453
|
+
}
|
454
|
+
/**
|
455
|
+
* Convert degrees to radians.
|
456
|
+
* @param degrees Input degrees value to be converted
|
457
|
+
* @returns Return converted angle value in radians
|
458
|
+
*/
|
459
|
+
function degToRad(degrees) {
|
460
|
+
return degrees * DEG2RAD;
|
461
|
+
}
|
462
|
+
/**
|
463
|
+
* Convert radians to degrees.
|
464
|
+
* @param radians Input radians value to be converted
|
465
|
+
* @returns Return converted angle value in degrees
|
466
|
+
*/
|
467
|
+
function radToDeg(radians) {
|
468
|
+
return radians * RAD2DEG;
|
469
|
+
}
|
470
|
+
/**
|
471
|
+
* Return true if n is a power of 2.
|
472
|
+
* @param value Input the number to check
|
473
|
+
* @returns Return true if n is a power of 2.
|
474
|
+
*/
|
475
|
+
function isPowerOfTwo(value) {
|
476
|
+
return (value & (value - 1)) === 0 && value !== 0;
|
477
|
+
}
|
478
|
+
/**
|
479
|
+
* Return the smallest power of 2 that is greater than or equal to n.
|
480
|
+
* @param value Input one number
|
481
|
+
* @returns Return the smallest power of 2 that is greater than or equal to n.
|
482
|
+
*/
|
483
|
+
function ceilPowerOfTwo(value) {
|
484
|
+
return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));
|
485
|
+
}
|
486
|
+
/**
|
487
|
+
* Return the largest power of 2 that is less than or equal to n.
|
488
|
+
* @param value Input one number
|
489
|
+
* @returns Return the largest power of 2 that is less than or equal to n.
|
490
|
+
*/
|
491
|
+
function floorPowerOfTwo(value) {
|
492
|
+
return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));
|
493
|
+
}
|
494
|
+
/**
|
495
|
+
* Normalize one angle in radian to value in range 0 to 2*PI
|
496
|
+
* @param angle Input one angle value in radians
|
497
|
+
* @returns Return normalized angle value in radians
|
498
|
+
*/
|
499
|
+
function normalizeAngle(angle) {
|
500
|
+
var TAU = Math.PI * 2;
|
501
|
+
return ((angle % TAU) + TAU) % TAU;
|
502
|
+
}
|
503
|
+
/**
|
504
|
+
* Return true if the valueToTest is between (value1, value2) or (value2, value1)
|
505
|
+
* @param valueToTest Input value to test
|
506
|
+
* @param value1 Input the first value
|
507
|
+
* @param value2 Input the second value
|
508
|
+
* @returns Return true if if the valueToTest is between (value1, value2) or (value2, value1).
|
509
|
+
*/
|
510
|
+
function isBetween(valueToTest, value1, value2) {
|
511
|
+
return ((valueToTest > value1 && valueToTest < value2) ||
|
512
|
+
(valueToTest > value2 && valueToTest < value1));
|
513
|
+
}
|
514
|
+
/**
|
515
|
+
* Return true if the algleToTest is between startAngle and endAngle
|
516
|
+
* @param angleToTest Input angle to test
|
517
|
+
* @param startAngle Input start angle
|
518
|
+
* @param endAngle Input end angle
|
519
|
+
* @param clockwise Input rotation direction from start angle to end angle
|
520
|
+
* @returns Return true if the algleToTest is between startAngle and endAngle
|
521
|
+
*/
|
522
|
+
function isBetweenAngle(angleToTest, startAngle, endAngle, clockwise) {
|
523
|
+
if (clockwise === void 0) { clockwise = false; }
|
524
|
+
angleToTest = normalizeAngle(angleToTest);
|
525
|
+
startAngle = normalizeAngle(startAngle);
|
526
|
+
endAngle = normalizeAngle(endAngle);
|
527
|
+
if (clockwise) {
|
528
|
+
if (startAngle > endAngle) {
|
529
|
+
return angleToTest <= startAngle && angleToTest >= endAngle;
|
530
|
+
}
|
531
|
+
else {
|
532
|
+
return angleToTest <= startAngle || angleToTest >= endAngle;
|
533
|
+
}
|
534
|
+
}
|
535
|
+
else {
|
536
|
+
if (startAngle < endAngle) {
|
537
|
+
return angleToTest >= startAngle && angleToTest <= endAngle;
|
538
|
+
}
|
539
|
+
else {
|
540
|
+
return angleToTest >= startAngle || angleToTest <= endAngle;
|
541
|
+
}
|
542
|
+
}
|
543
|
+
}
|
544
|
+
function intPartLength(num) {
|
545
|
+
num = Math.abs(num);
|
546
|
+
if (num < 1.0) {
|
547
|
+
return 0;
|
548
|
+
}
|
549
|
+
return Math.ceil(Math.log10(Math.abs(num) + 1));
|
550
|
+
}
|
551
|
+
function relativeEps(num, epsilon) {
|
552
|
+
if (epsilon === void 0) { epsilon = 1.0e-7; }
|
553
|
+
var count = intPartLength(num);
|
554
|
+
return Math.max(Math.pow(10, count) * epsilon, epsilon);
|
555
|
+
}
|
556
|
+
var AcGeMathUtil = {
|
557
|
+
DEG2RAD: DEG2RAD,
|
558
|
+
RAD2DEG: RAD2DEG,
|
559
|
+
generateUUID: generateUUID,
|
560
|
+
clamp: clamp,
|
561
|
+
euclideanModulo: euclideanModulo,
|
562
|
+
mapLinear: mapLinear,
|
563
|
+
inverseLerp: inverseLerp,
|
564
|
+
lerp: lerp,
|
565
|
+
damp: damp,
|
566
|
+
pingpong: pingpong,
|
567
|
+
smoothstep: smoothstep,
|
568
|
+
smootherstep: smootherstep,
|
569
|
+
randInt: randInt,
|
570
|
+
randFloat: randFloat,
|
571
|
+
randFloatSpread: randFloatSpread,
|
572
|
+
seededRandom: seededRandom,
|
573
|
+
degToRad: degToRad,
|
574
|
+
radToDeg: radToDeg,
|
575
|
+
isPowerOfTwo: isPowerOfTwo,
|
576
|
+
ceilPowerOfTwo: ceilPowerOfTwo,
|
577
|
+
floorPowerOfTwo: floorPowerOfTwo,
|
578
|
+
normalizeAngle: normalizeAngle,
|
579
|
+
isBetween: isBetween,
|
580
|
+
isBetweenAngle: isBetweenAngle,
|
581
|
+
intPartLength: intPartLength,
|
582
|
+
relativeEps: relativeEps
|
583
|
+
};
|
584
|
+
export { DEG2RAD, RAD2DEG, generateUUID, clamp, euclideanModulo, mapLinear, inverseLerp, lerp, damp, pingpong, smoothstep, smootherstep, randInt, randFloat, randFloatSpread, seededRandom, degToRad, radToDeg, isPowerOfTwo, ceilPowerOfTwo, floorPowerOfTwo, normalizeAngle, isBetween, isBetweenAngle, intPartLength, relativeEps, AcGeMathUtil };
|
585
|
+
//# sourceMappingURL=AcGeMathUtil.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AcGeMathUtil.js","sourceRoot":"","sources":["../../src/util/AcGeMathUtil.ts"],"names":[],"mappings":"AAAA,IAAM,IAAI,GAAa;IACrB,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI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"}
|
@@ -0,0 +1,91 @@
|
|
1
|
+
import { AcGePoint2dLike, AcGePoint3dLike } from '../math';
|
2
|
+
/**
|
3
|
+
* The class used to store some tolerance values.
|
4
|
+
*/
|
5
|
+
export declare class AcGeTol {
|
6
|
+
/**
|
7
|
+
* Tolerance value to check whether two points are equal. Two points, p1 and p2, are equal if
|
8
|
+
* <pre>
|
9
|
+
* (p1 - p2).length() <= equalPointTol
|
10
|
+
* </pre
|
11
|
+
*/
|
12
|
+
equalPointTol: number;
|
13
|
+
/**
|
14
|
+
* Tolerance value to compare two vectors.
|
15
|
+
*
|
16
|
+
* 1. Two vectors, v1 and v2, are equal if
|
17
|
+
* <pre>
|
18
|
+
* (p1 - p2).length() <= equalPoint
|
19
|
+
* </pre>
|
20
|
+
*
|
21
|
+
* 2. Two vectors, v1 and v2, are parallel if
|
22
|
+
* <pre>
|
23
|
+
* (v1/v1.length() - v2/v2.length() ).length() < equalVectorTol
|
24
|
+
* </pre>
|
25
|
+
* 或
|
26
|
+
* <pre>
|
27
|
+
* (v1/v1.length() + v2/v2.length() ).length() < equalVectorTol
|
28
|
+
* </pre>
|
29
|
+
*
|
30
|
+
* 3. Two vectors, v1 and v2, are perpendicular if
|
31
|
+
* <pre>
|
32
|
+
* abs((v1.dotProduct(v2))/(v1.length()*v2.length())) <= equalVectorTol
|
33
|
+
* </pre>
|
34
|
+
*/
|
35
|
+
equalVectorTol: number;
|
36
|
+
/**
|
37
|
+
* Create tolerance class with default tolerance values
|
38
|
+
*/
|
39
|
+
constructor();
|
40
|
+
/**
|
41
|
+
* Return true if two points are equal with the specified tolerance.
|
42
|
+
* @param p1 Input the first 2d point
|
43
|
+
* @param p2 Input the second 2d point
|
44
|
+
* @returns Return true if two poitns are equal with the specified tolerance.
|
45
|
+
*/
|
46
|
+
equalPoint2d(p1: AcGePoint2dLike, p2: AcGePoint2dLike): boolean;
|
47
|
+
/**
|
48
|
+
* Return true if two points are equal with the specified tolerance.
|
49
|
+
* @param p1 Input the first 2d point
|
50
|
+
* @param p2 Input the second 2d point
|
51
|
+
* @returns Return true if two poitns are equal with the specified tolerance.
|
52
|
+
*/
|
53
|
+
equalPoint3d(p1: AcGePoint3dLike, p2: AcGePoint3dLike): boolean;
|
54
|
+
/**
|
55
|
+
* Return true if the value is equal to zero with the specified tolerance.
|
56
|
+
*/
|
57
|
+
static equalToZero(x: number, tol?: number): boolean;
|
58
|
+
/**
|
59
|
+
* Return true if two values are equal with the sepcified tolerance.
|
60
|
+
*
|
61
|
+
* @param value1 Input the first value
|
62
|
+
* @param value2 Input the second value
|
63
|
+
* @param tol Input the tolerance value
|
64
|
+
* @returns Return true if two values are equal with the sepcified tolerance
|
65
|
+
*/
|
66
|
+
static equal(value1: number, value2: number, tol?: number): boolean;
|
67
|
+
/**
|
68
|
+
* Return true if the first argument are greater than the second argument with the sepcified
|
69
|
+
* tolerance.
|
70
|
+
*
|
71
|
+
* @param value1 Input the first value
|
72
|
+
* @param value2 Input the second value
|
73
|
+
* @param tol Input the tolerance value
|
74
|
+
* @returns Return true if the first argument are greater than the second argument with the
|
75
|
+
* sepcified tolerance.
|
76
|
+
*/
|
77
|
+
static great(value1: number, value2: number, tol?: number): boolean;
|
78
|
+
/**
|
79
|
+
* Return true if the first argument less than the second argument with the specified tolerance
|
80
|
+
* value
|
81
|
+
*
|
82
|
+
* @param value1 Input the first value
|
83
|
+
* @param value2 Input the second value
|
84
|
+
* @param tol Input the tolerance value
|
85
|
+
* @returns Return *true* if the first argument less than the second argument with the specified
|
86
|
+
* tolerance value
|
87
|
+
*/
|
88
|
+
static less(value1: number, value2: number, tol?: number): boolean;
|
89
|
+
}
|
90
|
+
export declare const DEFAULT_TOL: AcGeTol;
|
91
|
+
//# sourceMappingURL=AcGeTol.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AcGeTol.d.ts","sourceRoot":"","sources":["../../src/util/AcGeTol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EAGhB,MAAM,SAAS,CAAA;AAGhB;;GAEG;AACH,qBAAa,OAAO;IAClB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;;IAMH;;;;;OAKG;IACH,YAAY,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe;IAIrD;;;;;OAKG;IACH,YAAY,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe;IAIrD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB;IAIrD;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAkB,GACtB,OAAO;IAIV;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAkB,GACtB,OAAO;IAIV;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB;CAGpE;AAED,eAAO,MAAM,WAAW,SAAgB,CAAA"}
|