@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,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;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;CACL,CAAA;AAED,IAAI,KAAK,GAAG,OAAO,CAAA;AAEnB,IAAM,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAA;AAC7B,IAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAA;AAE7B;;;;GAIG;AACH,SAAS,YAAY;IACnB,IAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAM,IAAI,GACR,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,GAAG;QACH,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,GAAG;QACH,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,GAAG;QACH,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,GAAG;QACH,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;IAEzB,+EAA+E;IAC/E,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,SAAS,CAAC,CAAS,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;IAC1E,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa;IACtD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC;AACD;;;;;;;;GAQG;AACH,SAAS,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC3C,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc,EAAE,EAAU;IAC5D,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,CAAS,EAAE,MAAkB;IAAlB,uBAAA,EAAA,UAAkB;IAC7C,OAAO,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;AACnE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW;IACrD,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,CAAC,CAAA;IACtB,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,CAAC,CAAA;IAEtB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IAE3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW;IACvD,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,CAAC,CAAA;IACtB,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,CAAC,CAAA;IAEtB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IAE3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,GAAW,EAAE,IAAY;IACxC,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED;;;;;GAKG;AACH,yCAAyC;AACzC,SAAS,SAAS,CAAC,GAAW,EAAE,IAAY;IAC1C,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAA;AAC3C,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;AACtC,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,CAAS;IAC7B,IAAI,CAAC,KAAK,SAAS;QAAE,KAAK,GAAG,CAAC,CAAA;IAE9B,uBAAuB;IAEvB,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC,CAAA;IAE7B,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAEpC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IAEzC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAA;AAC9C,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,OAAe;IAC/B,OAAO,OAAO,GAAG,OAAO,CAAA;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,OAAe;IAC/B,OAAO,OAAO,GAAG,OAAO,CAAA;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAA;AACnD,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,IAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;IACvB,OAAO,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AACpC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,WAAmB,EAAE,MAAc,EAAE,MAAc;IACpE,OAAO,CACL,CAAC,WAAW,GAAG,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC;QAC9C,CAAC,WAAW,GAAG,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,CAC/C,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CACrB,WAAmB,EACnB,UAAkB,EAClB,QAAgB,EAChB,SAA0B;IAA1B,0BAAA,EAAA,iBAA0B;IAE1B,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;IACzC,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IACvC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACnC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,UAAU,GAAG,QAAQ,EAAE,CAAC;YAC1B,OAAO,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,CAAA;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,CAAA;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,UAAU,GAAG,QAAQ,EAAE,CAAC;YAC1B,OAAO,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,CAAA;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,QAAQ,CAAA;QAC7D,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnB,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,OAAgB;IAAhB,wBAAA,EAAA,gBAAgB;IAChD,IAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAChC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,CAAA;AACzD,CAAC;AAED,IAAM,YAAY,GAAG;IACnB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE,YAAY;IAC1B,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,eAAe;IAChC,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,UAAU;IACtB,YAAY,EAAE,YAAY;IAC1B,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,SAAS;IACpB,eAAe,EAAE,eAAe;IAChC,YAAY,EAAE,YAAY;IAC1B,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,YAAY;IAC1B,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,eAAe;IAChC,cAAc,EAAE,cAAc;IAC9B,SAAS,EAAE,SAAS;IACpB,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,WAAW;CACzB,CAAA;AAED,OAAO,EACL,OAAO,EACP,OAAO,EACP,YAAY,EACZ,KAAK,EACL,eAAe,EACf,SAAS,EACT,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,OAAO,EACP,SAAS,EACT,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACb,CAAA"}
@@ -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"}