| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- export function clamp(value, min, max) {
- return Math.min(Math.max(value, min), max);
- }
- export class MovingAverage {
- constructor() {
- this._n = 1;
- this._val = 0;
- }
- update(value) {
- this._val = this._val + (value - this._val) / this._n;
- this._n += 1;
- return this._val;
- }
- get value() {
- return this._val;
- }
- }
- export class SlidingWindowAverage {
- constructor(size) {
- this._n = 0;
- this._val = 0;
- this._values = [];
- this._index = 0;
- this._sum = 0;
- this._values = new Array(size);
- this._values.fill(0, 0, size);
- }
- update(value) {
- const oldValue = this._values[this._index];
- this._values[this._index] = value;
- this._index = (this._index + 1) % this._values.length;
- this._sum -= oldValue;
- this._sum += value;
- if (this._n < this._values.length) {
- this._n += 1;
- }
- this._val = this._sum / this._n;
- return this._val;
- }
- get value() {
- return this._val;
- }
- }
|