Merge pull request #2727 from nasa/swg-randomness

Adds customizable randomness factor to sine wave generator
This commit is contained in:
Shefali Joshi 2020-03-20 10:25:17 -07:00 committed by GitHub
commit 459b2060a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 10 deletions

View File

@ -31,6 +31,7 @@ define([
period: 10, period: 10,
offset: 0, offset: 0,
dataRateInHz: 1, dataRateInHz: 1,
randomness: 0,
phase: 0 phase: 0
}; };
@ -52,7 +53,8 @@ define([
'period', 'period',
'offset', 'offset',
'dataRateInHz', 'dataRateInHz',
'phase' 'phase',
'randomness'
]; ];
request = request || {}; request = request || {};

View File

@ -65,8 +65,8 @@
name: data.name, name: data.name,
utc: nextStep, utc: nextStep,
yesterday: nextStep - 60*60*24*1000, yesterday: nextStep - 60*60*24*1000,
sin: sin(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) cos: cos(nextStep, data.period, data.amplitude, data.offset, data.phase, data.randomness)
} }
}); });
nextStep += step; nextStep += step;
@ -99,6 +99,7 @@
var offset = request.offset; var offset = request.offset;
var dataRateInHz = request.dataRateInHz; var dataRateInHz = request.dataRateInHz;
var phase = request.phase; var phase = request.phase;
var randomness = request.randomness;
var step = 1000 / dataRateInHz; var step = 1000 / dataRateInHz;
var nextStep = start - (start % step) + step; var nextStep = start - (start % step) + step;
@ -110,8 +111,8 @@
name: request.name, name: request.name,
utc: nextStep, utc: nextStep,
yesterday: nextStep - 60*60*24*1000, yesterday: nextStep - 60*60*24*1000,
sin: sin(nextStep, period, amplitude, offset, phase), sin: sin(nextStep, period, amplitude, offset, phase, randomness),
cos: cos(nextStep, period, amplitude, offset, phase) cos: cos(nextStep, period, amplitude, offset, phase, randomness)
}); });
} }
self.postMessage({ self.postMessage({
@ -120,14 +121,14 @@
}); });
} }
function cos(timestamp, period, amplitude, offset, phase) { function cos(timestamp, period, amplitude, offset, phase, randomness) {
return amplitude * 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 * 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) { function sendError(error, message) {

View File

@ -122,6 +122,17 @@ define([
"telemetry", "telemetry",
"phase" "phase"
] ]
},
{
name: "Randomness",
control: "numberfield",
cssClass: "l-input-sm l-numeric",
key: "randomness",
required: true,
property: [
"telemetry",
"randomness"
]
} }
], ],
initialize: function (object) { initialize: function (object) {
@ -130,7 +141,8 @@ define([
amplitude: 1, amplitude: 1,
offset: 0, offset: 0,
dataRateInHz: 1, dataRateInHz: 1,
phase: 0 phase: 0,
randomness: 0
}; };
} }
}); });