From a1b1fa464e8775a659c3ed7bdacd12bd7309b56a Mon Sep 17 00:00:00 2001 From: Andrew Henry Date: Thu, 5 Mar 2020 08:29:45 -0800 Subject: [PATCH] Adds customizable randomness factor to sine wave generator. Fixes #2726 --- example/generator/GeneratorProvider.js | 4 +++- example/generator/generatorWorker.js | 19 ++++++++++--------- example/generator/plugin.js | 14 +++++++++++++- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/example/generator/GeneratorProvider.js b/example/generator/GeneratorProvider.js index a699b9335d..1de9d5bf60 100644 --- a/example/generator/GeneratorProvider.js +++ b/example/generator/GeneratorProvider.js @@ -31,6 +31,7 @@ define([ period: 10, offset: 0, dataRateInHz: 1, + randomness: 0, phase: 0 }; @@ -52,7 +53,8 @@ define([ 'period', 'offset', 'dataRateInHz', - 'phase' + 'phase', + 'randomness' ]; request = request || {}; diff --git a/example/generator/generatorWorker.js b/example/generator/generatorWorker.js index c1d1918dc5..23f443c9a6 100644 --- a/example/generator/generatorWorker.js +++ b/example/generator/generatorWorker.js @@ -65,8 +65,8 @@ name: data.name, utc: nextStep, yesterday: nextStep - 60*60*24*1000, - sin: sin(nextStep, data.period, data.amplitude, data.offset, data.phase), - cos: cos(nextStep, data.period, data.amplitude, data.offset, data.phase) + sin: sin(nextStep, data.period, data.amplitude, data.offset, data.phase, data.randomness), + cos: cos(nextStep, data.period, data.amplitude, data.offset, data.phase, data.randomness) } }); nextStep += step; @@ -99,19 +99,20 @@ var offset = request.offset; var dataRateInHz = request.dataRateInHz; var phase = request.phase; + var randomness = request.randomness; var step = 1000 / dataRateInHz; var nextStep = start - (start % step) + step; var data = []; - for (; nextStep < end && data.length < 5000; nextStep += step) { + for (; nextStep < end && data.length < 50000; nextStep += step) { data.push({ name: request.name, utc: nextStep, yesterday: nextStep - 60*60*24*1000, - sin: sin(nextStep, period, amplitude, offset, phase), - cos: cos(nextStep, period, amplitude, offset, phase) + sin: sin(nextStep, period, amplitude, offset, phase, randomness), + cos: cos(nextStep, period, amplitude, offset, phase, randomness) }); } self.postMessage({ @@ -120,14 +121,14 @@ }); } - function cos(timestamp, period, amplitude, offset, phase) { + function cos(timestamp, period, amplitude, offset, phase, randomness) { return amplitude * - Math.cos(phase + (timestamp / period / 1000 * Math.PI * 2)) + offset; + Math.cos(phase + (timestamp / period / 1000 * Math.PI * 2)) + (amplitude * Math.random() * randomness) + offset; } - function sin(timestamp, period, amplitude, offset, phase) { + function sin(timestamp, period, amplitude, offset, phase, randomness) { return amplitude * - Math.sin(phase + (timestamp / period / 1000 * Math.PI * 2)) + offset; + Math.sin(phase + (timestamp / period / 1000 * Math.PI * 2)) + (amplitude * Math.random() * randomness) + offset; } function sendError(error, message) { diff --git a/example/generator/plugin.js b/example/generator/plugin.js index 2201e9a40a..a2b8f9c773 100644 --- a/example/generator/plugin.js +++ b/example/generator/plugin.js @@ -122,6 +122,17 @@ define([ "telemetry", "phase" ] + }, + { + name: "Randomness", + control: "numberfield", + cssClass: "l-input-sm l-numeric", + key: "randomness", + required: true, + property: [ + "telemetry", + "randomness" + ] } ], initialize: function (object) { @@ -130,7 +141,8 @@ define([ amplitude: 1, offset: 0, dataRateInHz: 1, - phase: 0 + phase: 0, + randomness: 0 }; } });