27 lines
643 B
JavaScript
27 lines
643 B
JavaScript
function Integrator(sampleIntervalMS) {
|
|
var inputF = function () { return 0.0 };
|
|
var sum = 0.0;
|
|
|
|
var t1 = new Date().getTime();
|
|
var input1 = inputF(t1 / 1000);
|
|
|
|
function update() {
|
|
var t2 = new Date().getTime();
|
|
var input2 = inputF(t2 / 1000);
|
|
var dt = (t2 - t1) / 1000;
|
|
|
|
sum += (input1 + input2) * dt / 2;
|
|
|
|
t1 = t2;
|
|
input1 = input2;
|
|
}
|
|
|
|
var updater = setInterval(update, sampleIntervalMS);
|
|
|
|
return ({
|
|
input: function (newF) { inputF = newF },
|
|
output: function () { return sum },
|
|
shutdown: function () { clearInterval(updater) },
|
|
});
|
|
}
|