From 071461f6b9bfc60669777d9aadaf6c04bed33146 Mon Sep 17 00:00:00 2001 From: Mehul Kumar Nirala Date: Fri, 18 Oct 2019 12:13:08 +0530 Subject: [PATCH 1/3] Added Download button in draw zone. Added Download button for draw zone. It would help the user to recreate the diagram from the fourier series data. --- content/content.md | 7 ++++++- js/controller/epicycles-controller.js | 14 +++++++++++++- js/main.js | 11 +++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/content/content.md b/content/content.md index 6859af4..81552e0 100644 --- a/content/content.md +++ b/content/content.md @@ -137,7 +137,12 @@ All this applies to any drawing, really! Now it’s your chance to play around w

Draw here!

- +
+ + + + +
diff --git a/js/controller/epicycles-controller.js b/js/controller/epicycles-controller.js index 4ce9d22..0148680 100644 --- a/js/controller/epicycles-controller.js +++ b/js/controller/epicycles-controller.js @@ -39,7 +39,8 @@ export default class EpicyclesController extends CanvasController { // Get the fourier data, also filter out the really small terms. this.fourierData = getFourierData(resample2dData(path, this.numPoints)).filter(f => f.amplitude > minAmplitude); this.fourierData.sort((a, b) => b.amplitude - a.amplitude); - console.log(this.fourierData.length + '/' + numPoints) + console.log(this.fourierData.length + '/' + numPoints); + this.jsonData(); } setFourierAmt(amt) { @@ -60,6 +61,7 @@ export default class EpicyclesController extends CanvasController { if (this.pathDirty) { this.recalculatePath(); this.pathDirty = false; + this.jsonData(); } if (!this.animate) { @@ -161,5 +163,15 @@ export default class EpicyclesController extends CanvasController { } this.context.globalAlpha = 1; } + jsonData() { + const numFouriers = Math.round(slurp(2, this.fourierData.length, this.fourierAmt)); + let frequency = [], phase = [], amplitude = []; + for (let i = 0; i < numFouriers; i ++) { + frequency.push(this.fourierData[i].freq); + phase.push(this.fourierData[i].phase); + amplitude.push(this.fourierData[i].amplitude); + } + this.data = {"amplitude": amplitude, "phase":phase, "frequency":frequency}; + } } diff --git a/js/main.js b/js/main.js index 2945da1..15b5e8e 100644 --- a/js/main.js +++ b/js/main.js @@ -251,6 +251,17 @@ function init() { if (circleZoneSlider) { circleZoneSlider.onValueChange.push(val => epicycles.setFourierAmt(val)); } + if (hasElement('circle-zone-download-button')) { + const downloadButton = document.getElementById('circle-zone-download-button'); + downloadButton.addEventListener('click', () => { + epicycles.jsonData(); + var jsonData = "data:text/json;charset=utf-8,"+JSON.stringify(epicycles.data); + var downloadElem = document.getElementById('download-elem'); + downloadElem.setAttribute("href", jsonData); + downloadElem.setAttribute("download", "fourier-data.json"); + // console.log(jsonData); + }); + } controllers.push(epicycles); } From 06f07ca5a9940e5a28ce7798b1661433ec2e7ab8 Mon Sep 17 00:00:00 2001 From: Mehul Kumar Nirala Date: Fri, 18 Oct 2019 12:16:36 +0530 Subject: [PATCH 2/3] Update epicycles-controller.js Remove zero frequency. --- js/controller/epicycles-controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/controller/epicycles-controller.js b/js/controller/epicycles-controller.js index 0148680..f2366ce 100644 --- a/js/controller/epicycles-controller.js +++ b/js/controller/epicycles-controller.js @@ -166,7 +166,7 @@ export default class EpicyclesController extends CanvasController { jsonData() { const numFouriers = Math.round(slurp(2, this.fourierData.length, this.fourierAmt)); let frequency = [], phase = [], amplitude = []; - for (let i = 0; i < numFouriers; i ++) { + for (let i = 1; i < numFouriers; i ++) { frequency.push(this.fourierData[i].freq); phase.push(this.fourierData[i].phase); amplitude.push(this.fourierData[i].amplitude); From 4c8f6d4e2539e21406267ba7192fe3ff62de7bd1 Mon Sep 17 00:00:00 2001 From: Mehul Kumar Nirala Date: Fri, 18 Oct 2019 12:30:30 +0530 Subject: [PATCH 3/3] Update epicycles-controller.js --- js/controller/epicycles-controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/controller/epicycles-controller.js b/js/controller/epicycles-controller.js index f2366ce..2ff5349 100644 --- a/js/controller/epicycles-controller.js +++ b/js/controller/epicycles-controller.js @@ -166,7 +166,7 @@ export default class EpicyclesController extends CanvasController { jsonData() { const numFouriers = Math.round(slurp(2, this.fourierData.length, this.fourierAmt)); let frequency = [], phase = [], amplitude = []; - for (let i = 1; i < numFouriers; i ++) { + for (let i = 0; i < numFouriers; i++) { frequency.push(this.fourierData[i].freq); phase.push(this.fourierData[i].phase); amplitude.push(this.fourierData[i].amplitude);