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!
Undo
-
+
diff --git a/js/controller/epicycles-controller.js b/js/controller/epicycles-controller.js
index 4ce9d22..2ff5349 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);
}