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