@2112-lab/central-plant 0.1.4 → 0.1.6

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 (88) hide show
  1. package/dist/bundle/index.js +33146 -1
  2. package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +432 -1
  3. package/dist/cjs/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1448 -1
  4. package/dist/cjs/node_modules/three/examples/jsm/controls/OrbitControls.js +1853 -1
  5. package/dist/cjs/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3537 -1
  6. package/dist/cjs/node_modules/three/examples/jsm/exporters/OBJExporter.js +305 -1
  7. package/dist/cjs/node_modules/three/examples/jsm/exporters/PLYExporter.js +542 -1
  8. package/dist/cjs/node_modules/three/examples/jsm/exporters/STLExporter.js +218 -1
  9. package/dist/cjs/node_modules/three/examples/jsm/loaders/DRACOLoader.js +683 -1
  10. package/dist/cjs/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4811 -1
  11. package/dist/cjs/node_modules/three/examples/jsm/loaders/RGBELoader.js +480 -1
  12. package/dist/cjs/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +309 -1
  13. package/dist/cjs/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +120 -1
  14. package/dist/cjs/src/analysis/analysis.js +560 -1
  15. package/dist/cjs/src/analysis/testing.js +958 -1
  16. package/dist/cjs/src/core/centralPlant.js +1149 -1
  17. package/dist/cjs/src/core/debugLogger.js +175 -1
  18. package/dist/cjs/src/core/mathUtils.js +574 -1
  19. package/dist/cjs/src/core/nameUtils.js +93 -1
  20. package/dist/cjs/src/data/export.js +716 -1
  21. package/dist/cjs/src/data/import.js +380 -1
  22. package/dist/cjs/src/data/numerics.js +522 -1
  23. package/dist/cjs/src/helpers/sceneHelper.js +572 -1
  24. package/dist/cjs/src/index.js +69 -1
  25. package/dist/cjs/src/managers/components/animationManager.js +123 -1
  26. package/dist/cjs/src/managers/components/componentManager.js +332 -1
  27. package/dist/cjs/src/managers/components/pathfindingManager.js +1441 -1
  28. package/dist/cjs/src/managers/controls/TransformControls.js +1063 -1
  29. package/dist/cjs/src/managers/controls/cameraControlsManager.js +79 -1
  30. package/dist/cjs/src/managers/controls/dragDropManager.js +1026 -1
  31. package/dist/cjs/src/managers/controls/keyboardControlsManager.js +395 -1
  32. package/dist/cjs/src/managers/controls/transformControlsManager.js +1807 -1
  33. package/dist/cjs/src/managers/environment/environmentManager.js +714 -1
  34. package/dist/cjs/src/managers/environment/textureConfig.js +229 -1
  35. package/dist/cjs/src/managers/scene/sceneExportManager.js +264 -1
  36. package/dist/cjs/src/managers/scene/sceneInitializationManager.js +346 -1
  37. package/dist/cjs/src/managers/scene/sceneOperationsManager.js +1509 -1
  38. package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +661 -1
  39. package/dist/cjs/src/managers/system/disposalManager.js +444 -1
  40. package/dist/cjs/src/managers/system/hotReloadManager.js +291 -1
  41. package/dist/cjs/src/managers/system/performanceMonitor.js +863 -1
  42. package/dist/cjs/src/rendering/modelPreloader.js +369 -1
  43. package/dist/cjs/src/rendering/rendering2D.js +631 -1
  44. package/dist/cjs/src/rendering/rendering3D.js +685 -1
  45. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +396 -1
  46. package/dist/esm/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1444 -1
  47. package/dist/esm/node_modules/three/examples/jsm/controls/OrbitControls.js +1849 -1
  48. package/dist/esm/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3533 -1
  49. package/dist/esm/node_modules/three/examples/jsm/exporters/OBJExporter.js +301 -1
  50. package/dist/esm/node_modules/three/examples/jsm/exporters/PLYExporter.js +538 -1
  51. package/dist/esm/node_modules/three/examples/jsm/exporters/STLExporter.js +214 -1
  52. package/dist/esm/node_modules/three/examples/jsm/loaders/DRACOLoader.js +679 -1
  53. package/dist/esm/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4807 -1
  54. package/dist/esm/node_modules/three/examples/jsm/loaders/RGBELoader.js +476 -1
  55. package/dist/esm/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +304 -1
  56. package/dist/esm/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +116 -1
  57. package/dist/esm/src/analysis/analysis.js +536 -1
  58. package/dist/esm/src/analysis/testing.js +954 -1
  59. package/dist/esm/src/core/centralPlant.js +1144 -1
  60. package/dist/esm/src/core/debugLogger.js +167 -1
  61. package/dist/esm/src/core/mathUtils.js +570 -1
  62. package/dist/esm/src/core/nameUtils.js +87 -1
  63. package/dist/esm/src/data/export.js +712 -1
  64. package/dist/esm/src/data/import.js +356 -1
  65. package/dist/esm/src/data/numerics.js +518 -1
  66. package/dist/esm/src/helpers/sceneHelper.js +547 -1
  67. package/dist/esm/src/index.js +35 -1
  68. package/dist/esm/src/managers/components/animationManager.js +119 -1
  69. package/dist/esm/src/managers/components/componentManager.js +328 -1
  70. package/dist/esm/src/managers/components/pathfindingManager.js +1417 -1
  71. package/dist/esm/src/managers/controls/TransformControls.js +1057 -1
  72. package/dist/esm/src/managers/controls/cameraControlsManager.js +75 -1
  73. package/dist/esm/src/managers/controls/dragDropManager.js +1002 -1
  74. package/dist/esm/src/managers/controls/keyboardControlsManager.js +371 -1
  75. package/dist/esm/src/managers/controls/transformControlsManager.js +1782 -1
  76. package/dist/esm/src/managers/environment/environmentManager.js +690 -1
  77. package/dist/esm/src/managers/environment/textureConfig.js +202 -1
  78. package/dist/esm/src/managers/scene/sceneExportManager.js +260 -1
  79. package/dist/esm/src/managers/scene/sceneInitializationManager.js +322 -1
  80. package/dist/esm/src/managers/scene/sceneOperationsManager.js +1485 -1
  81. package/dist/esm/src/managers/scene/sceneTooltipsManager.js +637 -1
  82. package/dist/esm/src/managers/system/disposalManager.js +440 -1
  83. package/dist/esm/src/managers/system/hotReloadManager.js +287 -1
  84. package/dist/esm/src/managers/system/performanceMonitor.js +858 -1
  85. package/dist/esm/src/rendering/modelPreloader.js +364 -1
  86. package/dist/esm/src/rendering/rendering2D.js +627 -1
  87. package/dist/esm/src/rendering/rendering3D.js +661 -1
  88. package/package.json +1 -1
@@ -1 +1,518 @@
1
- import{createClass as r,classCallCheck as n,defineProperty as t,toConsumableArray as e}from"../../_virtual/_rollupPluginBabelHelpers.js";var o=function(){return r(function r(){var o=this;n(this,r),t(this,"vector",{add:function(r,n){return r.map(function(r,t){return r+(n[t]||0)})},subtract:function(r,n){return r.map(function(r,t){return r-(n[t]||0)})},scale:function(r,n){return r.map(function(r){return r*n})},dot:function(r,n){return r.reduce(function(r,t,e){return r+t*(n[e]||0)},0)},cross:function(r,n){return[r[1]*n[2]-r[2]*n[1],r[2]*n[0]-r[0]*n[2],r[0]*n[1]-r[1]*n[0]]},magnitude:function(r){return Math.sqrt(r.reduce(function(r,n){return r+n*n},0))},normalize:function(r){var n=o.vector.magnitude(r);return n>0?r.map(function(r){return r/n}):r.slice()},distance:function(r,n){return o.vector.magnitude(o.vector.subtract(r,n))},lerp:function(r,n,t){return r.map(function(r,e){return r+t*((n[e]||0)-r)})}}),t(this,"matrix",{identity:function(r){for(var n=Array(r).fill().map(function(){return Array(r).fill(0)}),t=0;t<r;t++)n[t][t]=1;return n},multiply:function(r,n){for(var t=r.length,e=n[0].length,o=Array(t).fill().map(function(){return Array(e).fill(0)}),u=0;u<t;u++)for(var i=0;i<e;i++)for(var a=0;a<r[0].length;a++)o[u][i]+=r[u][a]*n[a][i];return o},multiplyVector:function(r,n){return r.map(function(r){return r.reduce(function(r,t,e){return r+t*(n[e]||0)},0)})},determinant:function(r){var n=r.length;if(2===n)return r[0][0]*r[1][1]-r[0][1]*r[1][0];if(3===n)return r[0][0]*(r[1][1]*r[2][2]-r[1][2]*r[2][1])-r[0][1]*(r[1][0]*r[2][2]-r[1][2]*r[2][0])+r[0][2]*(r[1][0]*r[2][1]-r[1][1]*r[2][0]);throw new Error("Determinant calculation only supported for 2x2 and 3x3 matrices")},transpose:function(r){return r[0].map(function(n,t){return r.map(function(r){return r[t]})})}}),t(this,"analysis",{newtonRaphson:function(r,n,t){for(var e=t,u=0;u<o.maxIterations;){var i=r(e),a=n(e);if(Math.abs(a)<o.precision)throw new Error("Derivative too small, cannot continue");var c=e-i/a;if(Math.abs(c-e)<o.convergenceThreshold)return{root:c,iterations:u+1,converged:!0,error:Math.abs(r(c))};e=c,u++}return{root:e,iterations:u,converged:!1,error:Math.abs(r(e))}},bisection:function(r,n,t){if(r(n)*r(t)>=0)throw new Error("Function must have opposite signs at bounds");for(var e=n,u=t,i=0;i<o.maxIterations;){var a=(e+u)/2,c=r(a);if(Math.abs(c)<o.convergenceThreshold||Math.abs(u-e)<o.convergenceThreshold)return{root:a,iterations:i+1,converged:!0,error:Math.abs(c)};r(e)*c<0?u=a:e=a,i++}return{root:(e+u)/2,iterations:i,converged:!1,error:Math.abs(r((e+u)/2))}},simpson:function(r,n,t){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:100;e%2!=0&&e++;for(var o=(t-n)/e,u=r(n)+r(t),i=1;i<e;i++){u+=(i%2==0?2:4)*r(n+i*o)}return o/3*u},derivative:function(r,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-8;return(r(n+t)-r(n-t))/(2*t)}}),t(this,"stats",{mean:function(r){return r.reduce(function(r,n){return r+n},0)/r.length},median:function(r){var n=e(r).sort(function(r,n){return r-n}),t=Math.floor(n.length/2);return n.length%2==0?(n[t-1]+n[t])/2:n[t]},stdDev:function(r){var n=o.stats.mean(r),t=r.reduce(function(r,t){return r+Math.pow(t-n,2)},0)/r.length;return Math.sqrt(t)},correlation:function(r,n){for(var t=Math.min(r.length,n.length),e=o.stats.mean(r.slice(0,t)),u=o.stats.mean(n.slice(0,t)),i=0,a=0,c=0,f=0;f<t;f++){var s=r[f]-e,v=n[f]-u;i+=s*v,a+=s*s,c+=v*v}var h=Math.sqrt(a*c);return 0!==h?i/h:0},linearRegression:function(r,n){for(var t=Math.min(r.length,n.length),e=o.stats.mean(r.slice(0,t)),u=o.stats.mean(n.slice(0,t)),i=0,a=0,c=0;c<t;c++){var f=r[c]-e;i+=f*(n[c]-u),a+=f*f}for(var s=0!==a?i/a:0,v=u-s*e,h=0,l=0,d=0;d<t;d++){var p=s*r[d]+v;h+=Math.pow(n[d]-p,2),l+=Math.pow(n[d]-u,2)}return{slope:s,intercept:v,rSquared:0!==l?1-h/l:0,predict:function(r){return s*r+v}}}}),t(this,"utils",{clamp:function(r,n,t){return Math.max(n,Math.min(t,r))},map:function(r,n,t,e,o){return e+(r-n)*(o-e)/(t-n)},approxEqual:function(r,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.precision;return Math.abs(r-n)<t},round:function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=Math.pow(10,n);return Math.round(r*t)/t},range:function(r,n){for(var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,e=[],o=r;o<=n;o+=t)e.push(o);return e},linspace:function(r,n,t){var e=(n-r)/(t-1);return Array.from({length:t},function(n,t){return r+t*e})}}),this.precision=1e-10,this.maxIterations=1e3,this.convergenceThreshold=1e-6},[{key:"setPrecision",value:function(r){this.precision=r}},{key:"setMaxIterations",value:function(r){this.maxIterations=r}},{key:"setConvergenceThreshold",value:function(r){this.convergenceThreshold=r}}])}();export{o as Numerics};
1
+ import { createClass as _createClass, classCallCheck as _classCallCheck, defineProperty as _defineProperty, toConsumableArray as _toConsumableArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+
3
+ /**
4
+ * Numerics
5
+ * Handles numerical computations, calculations, and data processing
6
+ */
7
+
8
+ var Numerics = /*#__PURE__*/function () {
9
+ function Numerics() {
10
+ var _this = this;
11
+ _classCallCheck(this, Numerics);
12
+ /**
13
+ * Vector operations
14
+ */
15
+ _defineProperty(this, "vector", {
16
+ /**
17
+ * Add two vectors
18
+ * @param {Array} a - First vector
19
+ * @param {Array} b - Second vector
20
+ * @returns {Array} Result vector
21
+ */
22
+ add: function add(a, b) {
23
+ return a.map(function (val, i) {
24
+ return val + (b[i] || 0);
25
+ });
26
+ },
27
+ /**
28
+ * Subtract two vectors
29
+ * @param {Array} a - First vector
30
+ * @param {Array} b - Second vector
31
+ * @returns {Array} Result vector
32
+ */
33
+ subtract: function subtract(a, b) {
34
+ return a.map(function (val, i) {
35
+ return val - (b[i] || 0);
36
+ });
37
+ },
38
+ /**
39
+ * Multiply vector by scalar
40
+ * @param {Array} vector - Input vector
41
+ * @param {number} scalar - Scalar value
42
+ * @returns {Array} Result vector
43
+ */
44
+ scale: function scale(vector, scalar) {
45
+ return vector.map(function (val) {
46
+ return val * scalar;
47
+ });
48
+ },
49
+ /**
50
+ * Calculate dot product
51
+ * @param {Array} a - First vector
52
+ * @param {Array} b - Second vector
53
+ * @returns {number} Dot product
54
+ */
55
+ dot: function dot(a, b) {
56
+ return a.reduce(function (sum, val, i) {
57
+ return sum + val * (b[i] || 0);
58
+ }, 0);
59
+ },
60
+ /**
61
+ * Calculate cross product (3D only)
62
+ * @param {Array} a - First vector [x, y, z]
63
+ * @param {Array} b - Second vector [x, y, z]
64
+ * @returns {Array} Cross product vector
65
+ */
66
+ cross: function cross(a, b) {
67
+ return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
68
+ },
69
+ /**
70
+ * Calculate vector magnitude
71
+ * @param {Array} vector - Input vector
72
+ * @returns {number} Magnitude
73
+ */
74
+ magnitude: function magnitude(vector) {
75
+ return Math.sqrt(vector.reduce(function (sum, val) {
76
+ return sum + val * val;
77
+ }, 0));
78
+ },
79
+ /**
80
+ * Normalize vector
81
+ * @param {Array} vector - Input vector
82
+ * @returns {Array} Normalized vector
83
+ */
84
+ normalize: function normalize(vector) {
85
+ var mag = _this.vector.magnitude(vector);
86
+ return mag > 0 ? vector.map(function (val) {
87
+ return val / mag;
88
+ }) : vector.slice();
89
+ },
90
+ /**
91
+ * Calculate distance between two points
92
+ * @param {Array} a - First point
93
+ * @param {Array} b - Second point
94
+ * @returns {number} Distance
95
+ */
96
+ distance: function distance(a, b) {
97
+ return _this.vector.magnitude(_this.vector.subtract(a, b));
98
+ },
99
+ /**
100
+ * Linear interpolation between two vectors
101
+ * @param {Array} a - Start vector
102
+ * @param {Array} b - End vector
103
+ * @param {number} t - Interpolation factor (0-1)
104
+ * @returns {Array} Interpolated vector
105
+ */
106
+ lerp: function lerp(a, b, t) {
107
+ return a.map(function (val, i) {
108
+ return val + t * ((b[i] || 0) - val);
109
+ });
110
+ }
111
+ });
112
+ /**
113
+ * Matrix operations
114
+ */
115
+ _defineProperty(this, "matrix", {
116
+ /**
117
+ * Create identity matrix
118
+ * @param {number} size - Matrix size (n x n)
119
+ * @returns {Array} Identity matrix
120
+ */
121
+ identity: function identity(size) {
122
+ var matrix = Array(size).fill().map(function () {
123
+ return Array(size).fill(0);
124
+ });
125
+ for (var i = 0; i < size; i++) {
126
+ matrix[i][i] = 1;
127
+ }
128
+ return matrix;
129
+ },
130
+ /**
131
+ * Multiply two matrices
132
+ * @param {Array} a - First matrix
133
+ * @param {Array} b - Second matrix
134
+ * @returns {Array} Result matrix
135
+ */
136
+ multiply: function multiply(a, b) {
137
+ var rows = a.length;
138
+ var cols = b[0].length;
139
+ var result = Array(rows).fill().map(function () {
140
+ return Array(cols).fill(0);
141
+ });
142
+ for (var i = 0; i < rows; i++) {
143
+ for (var j = 0; j < cols; j++) {
144
+ for (var k = 0; k < a[0].length; k++) {
145
+ result[i][j] += a[i][k] * b[k][j];
146
+ }
147
+ }
148
+ }
149
+ return result;
150
+ },
151
+ /**
152
+ * Matrix-vector multiplication
153
+ * @param {Array} matrix - Input matrix
154
+ * @param {Array} vector - Input vector
155
+ * @returns {Array} Result vector
156
+ */
157
+ multiplyVector: function multiplyVector(matrix, vector) {
158
+ return matrix.map(function (row) {
159
+ return row.reduce(function (sum, val, i) {
160
+ return sum + val * (vector[i] || 0);
161
+ }, 0);
162
+ });
163
+ },
164
+ /**
165
+ * Calculate matrix determinant (2x2 and 3x3)
166
+ * @param {Array} matrix - Input matrix
167
+ * @returns {number} Determinant
168
+ */
169
+ determinant: function determinant(matrix) {
170
+ var size = matrix.length;
171
+ if (size === 2) {
172
+ return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0];
173
+ } else if (size === 3) {
174
+ return matrix[0][0] * (matrix[1][1] * matrix[2][2] - matrix[1][2] * matrix[2][1]) - matrix[0][1] * (matrix[1][0] * matrix[2][2] - matrix[1][2] * matrix[2][0]) + matrix[0][2] * (matrix[1][0] * matrix[2][1] - matrix[1][1] * matrix[2][0]);
175
+ }
176
+ throw new Error('Determinant calculation only supported for 2x2 and 3x3 matrices');
177
+ },
178
+ /**
179
+ * Matrix transpose
180
+ * @param {Array} matrix - Input matrix
181
+ * @returns {Array} Transposed matrix
182
+ */
183
+ transpose: function transpose(matrix) {
184
+ return matrix[0].map(function (_, i) {
185
+ return matrix.map(function (row) {
186
+ return row[i];
187
+ });
188
+ });
189
+ }
190
+ });
191
+ /**
192
+ * Numerical analysis functions
193
+ */
194
+ _defineProperty(this, "analysis", {
195
+ /**
196
+ * Newton-Raphson method for root finding
197
+ * @param {Function} f - Function
198
+ * @param {Function} df - Derivative of function
199
+ * @param {number} x0 - Initial guess
200
+ * @returns {Object} Result with root and convergence info
201
+ */
202
+ newtonRaphson: function newtonRaphson(f, df, x0) {
203
+ var x = x0;
204
+ var iterations = 0;
205
+ while (iterations < _this.maxIterations) {
206
+ var fx = f(x);
207
+ var dfx = df(x);
208
+ if (Math.abs(dfx) < _this.precision) {
209
+ throw new Error('Derivative too small, cannot continue');
210
+ }
211
+ var newX = x - fx / dfx;
212
+ if (Math.abs(newX - x) < _this.convergenceThreshold) {
213
+ return {
214
+ root: newX,
215
+ iterations: iterations + 1,
216
+ converged: true,
217
+ error: Math.abs(f(newX))
218
+ };
219
+ }
220
+ x = newX;
221
+ iterations++;
222
+ }
223
+ return {
224
+ root: x,
225
+ iterations: iterations,
226
+ converged: false,
227
+ error: Math.abs(f(x))
228
+ };
229
+ },
230
+ /**
231
+ * Bisection method for root finding
232
+ * @param {Function} f - Function
233
+ * @param {number} a - Left bound
234
+ * @param {number} b - Right bound
235
+ * @returns {Object} Result with root and convergence info
236
+ */
237
+ bisection: function bisection(f, a, b) {
238
+ if (f(a) * f(b) >= 0) {
239
+ throw new Error('Function must have opposite signs at bounds');
240
+ }
241
+ var left = a;
242
+ var right = b;
243
+ var iterations = 0;
244
+ while (iterations < _this.maxIterations) {
245
+ var mid = (left + right) / 2;
246
+ var fMid = f(mid);
247
+ if (Math.abs(fMid) < _this.convergenceThreshold || Math.abs(right - left) < _this.convergenceThreshold) {
248
+ return {
249
+ root: mid,
250
+ iterations: iterations + 1,
251
+ converged: true,
252
+ error: Math.abs(fMid)
253
+ };
254
+ }
255
+ if (f(left) * fMid < 0) {
256
+ right = mid;
257
+ } else {
258
+ left = mid;
259
+ }
260
+ iterations++;
261
+ }
262
+ return {
263
+ root: (left + right) / 2,
264
+ iterations: iterations,
265
+ converged: false,
266
+ error: Math.abs(f((left + right) / 2))
267
+ };
268
+ },
269
+ /**
270
+ * Numerical integration using Simpson's rule
271
+ * @param {Function} f - Function to integrate
272
+ * @param {number} a - Lower bound
273
+ * @param {number} b - Upper bound
274
+ * @param {number} n - Number of intervals (must be even)
275
+ * @returns {number} Integral approximation
276
+ */
277
+ simpson: function simpson(f, a, b) {
278
+ var n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 100;
279
+ if (n % 2 !== 0) n++; // Ensure even number of intervals
280
+
281
+ var h = (b - a) / n;
282
+ var sum = f(a) + f(b);
283
+ for (var i = 1; i < n; i++) {
284
+ var x = a + i * h;
285
+ var coefficient = i % 2 === 0 ? 2 : 4;
286
+ sum += coefficient * f(x);
287
+ }
288
+ return h / 3 * sum;
289
+ },
290
+ /**
291
+ * Numerical differentiation
292
+ * @param {Function} f - Function to differentiate
293
+ * @param {number} x - Point of differentiation
294
+ * @param {number} h - Step size
295
+ * @returns {number} Derivative approximation
296
+ */
297
+ derivative: function derivative(f, x) {
298
+ var h = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1e-8;
299
+ return (f(x + h) - f(x - h)) / (2 * h);
300
+ }
301
+ });
302
+ /**
303
+ * Statistical functions
304
+ */
305
+ _defineProperty(this, "stats", {
306
+ /**
307
+ * Calculate mean
308
+ * @param {Array} data - Input data
309
+ * @returns {number} Mean value
310
+ */
311
+ mean: function mean(data) {
312
+ return data.reduce(function (sum, val) {
313
+ return sum + val;
314
+ }, 0) / data.length;
315
+ },
316
+ /**
317
+ * Calculate median
318
+ * @param {Array} data - Input data
319
+ * @returns {number} Median value
320
+ */
321
+ median: function median(data) {
322
+ var sorted = _toConsumableArray(data).sort(function (a, b) {
323
+ return a - b;
324
+ });
325
+ var mid = Math.floor(sorted.length / 2);
326
+ return sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
327
+ },
328
+ /**
329
+ * Calculate standard deviation
330
+ * @param {Array} data - Input data
331
+ * @returns {number} Standard deviation
332
+ */
333
+ stdDev: function stdDev(data) {
334
+ var mean = _this.stats.mean(data);
335
+ var variance = data.reduce(function (sum, val) {
336
+ return sum + Math.pow(val - mean, 2);
337
+ }, 0) / data.length;
338
+ return Math.sqrt(variance);
339
+ },
340
+ /**
341
+ * Calculate correlation coefficient
342
+ * @param {Array} x - First dataset
343
+ * @param {Array} y - Second dataset
344
+ * @returns {number} Correlation coefficient
345
+ */
346
+ correlation: function correlation(x, y) {
347
+ var n = Math.min(x.length, y.length);
348
+ var meanX = _this.stats.mean(x.slice(0, n));
349
+ var meanY = _this.stats.mean(y.slice(0, n));
350
+ var numerator = 0;
351
+ var sumXSq = 0;
352
+ var sumYSq = 0;
353
+ for (var i = 0; i < n; i++) {
354
+ var diffX = x[i] - meanX;
355
+ var diffY = y[i] - meanY;
356
+ numerator += diffX * diffY;
357
+ sumXSq += diffX * diffX;
358
+ sumYSq += diffY * diffY;
359
+ }
360
+ var denominator = Math.sqrt(sumXSq * sumYSq);
361
+ return denominator !== 0 ? numerator / denominator : 0;
362
+ },
363
+ /**
364
+ * Linear regression
365
+ * @param {Array} x - Independent variable
366
+ * @param {Array} y - Dependent variable
367
+ * @returns {Object} Regression parameters
368
+ */
369
+ linearRegression: function linearRegression(x, y) {
370
+ var n = Math.min(x.length, y.length);
371
+ var meanX = _this.stats.mean(x.slice(0, n));
372
+ var meanY = _this.stats.mean(y.slice(0, n));
373
+ var numerator = 0;
374
+ var denominator = 0;
375
+ for (var i = 0; i < n; i++) {
376
+ var diffX = x[i] - meanX;
377
+ numerator += diffX * (y[i] - meanY);
378
+ denominator += diffX * diffX;
379
+ }
380
+ var slope = denominator !== 0 ? numerator / denominator : 0;
381
+ var intercept = meanY - slope * meanX;
382
+
383
+ // Calculate R-squared
384
+ var ssRes = 0;
385
+ var ssTot = 0;
386
+ for (var _i = 0; _i < n; _i++) {
387
+ var predicted = slope * x[_i] + intercept;
388
+ ssRes += Math.pow(y[_i] - predicted, 2);
389
+ ssTot += Math.pow(y[_i] - meanY, 2);
390
+ }
391
+ var rSquared = ssTot !== 0 ? 1 - ssRes / ssTot : 0;
392
+ return {
393
+ slope: slope,
394
+ intercept: intercept,
395
+ rSquared: rSquared,
396
+ predict: function predict(xVal) {
397
+ return slope * xVal + intercept;
398
+ }
399
+ };
400
+ }
401
+ });
402
+ /**
403
+ * Utility functions
404
+ */
405
+ _defineProperty(this, "utils", {
406
+ /**
407
+ * Clamp value between min and max
408
+ * @param {number} value - Input value
409
+ * @param {number} min - Minimum value
410
+ * @param {number} max - Maximum value
411
+ * @returns {number} Clamped value
412
+ */
413
+ clamp: function clamp(value, min, max) {
414
+ return Math.max(min, Math.min(max, value));
415
+ },
416
+ /**
417
+ * Map value from one range to another
418
+ * @param {number} value - Input value
419
+ * @param {number} inMin - Input range minimum
420
+ * @param {number} inMax - Input range maximum
421
+ * @param {number} outMin - Output range minimum
422
+ * @param {number} outMax - Output range maximum
423
+ * @returns {number} Mapped value
424
+ */
425
+ map: function map(value, inMin, inMax, outMin, outMax) {
426
+ return outMin + (value - inMin) * (outMax - outMin) / (inMax - inMin);
427
+ },
428
+ /**
429
+ * Check if two numbers are approximately equal
430
+ * @param {number} a - First number
431
+ * @param {number} b - Second number
432
+ * @param {number} epsilon - Tolerance
433
+ * @returns {boolean} Whether numbers are approximately equal
434
+ */
435
+ approxEqual: function approxEqual(a, b) {
436
+ var epsilon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _this.precision;
437
+ return Math.abs(a - b) < epsilon;
438
+ },
439
+ /**
440
+ * Round to specified decimal places
441
+ * @param {number} value - Input value
442
+ * @param {number} decimals - Number of decimal places
443
+ * @returns {number} Rounded value
444
+ */
445
+ round: function round(value) {
446
+ var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
447
+ var factor = Math.pow(10, decimals);
448
+ return Math.round(value * factor) / factor;
449
+ },
450
+ /**
451
+ * Generate array of numbers
452
+ * @param {number} start - Start value
453
+ * @param {number} end - End value
454
+ * @param {number} step - Step size
455
+ * @returns {Array} Array of numbers
456
+ */
457
+ range: function range(start, end) {
458
+ var step = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
459
+ var result = [];
460
+ for (var i = start; i <= end; i += step) {
461
+ result.push(i);
462
+ }
463
+ return result;
464
+ },
465
+ /**
466
+ * Generate linearly spaced array
467
+ * @param {number} start - Start value
468
+ * @param {number} end - End value
469
+ * @param {number} count - Number of points
470
+ * @returns {Array} Linearly spaced array
471
+ */
472
+ linspace: function linspace(start, end, count) {
473
+ var step = (end - start) / (count - 1);
474
+ return Array.from({
475
+ length: count
476
+ }, function (_, i) {
477
+ return start + i * step;
478
+ });
479
+ }
480
+ });
481
+ this.precision = 1e-10;
482
+ this.maxIterations = 1000;
483
+ this.convergenceThreshold = 1e-6;
484
+ }
485
+ return _createClass(Numerics, [{
486
+ key: "setPrecision",
487
+ value:
488
+ /**
489
+ * Set numerical precision
490
+ * @param {number} precision - New precision value
491
+ */
492
+ function setPrecision(precision) {
493
+ this.precision = precision;
494
+ }
495
+
496
+ /**
497
+ * Set maximum iterations for iterative methods
498
+ * @param {number} maxIterations - Maximum iterations
499
+ */
500
+ }, {
501
+ key: "setMaxIterations",
502
+ value: function setMaxIterations(maxIterations) {
503
+ this.maxIterations = maxIterations;
504
+ }
505
+
506
+ /**
507
+ * Set convergence threshold
508
+ * @param {number} threshold - Convergence threshold
509
+ */
510
+ }, {
511
+ key: "setConvergenceThreshold",
512
+ value: function setConvergenceThreshold(threshold) {
513
+ this.convergenceThreshold = threshold;
514
+ }
515
+ }]);
516
+ }();
517
+
518
+ export { Numerics };