# Draw a Sine Wave in JavaScript ### To Do - [ ] Add links to JSFiddle I am revisiting the [Fourier transform](https://en.wikipedia.org/wiki/Fourier_transform) so I thought it might be nice to come up with some visualizations. My first stop was to plot a sine wave in JavaScript, then to animate it. I am using the `window.requestAnimationFrame()` method. I've documented the steps in reverse order. ## Simple Animation The end result is an oscillating sine wave. Nothing ground-breaking but it looks pretty cool to me.  The JavaScript funtion to plot the sine wave uses the `Math.sin()` function, which is called repeatedly given a different starting point on the y-axis. See the simple plot below. In this case, the `draw()` function makes the repeat calls via `window.requestAnimationFrame(draw)`. ```js function draw() { var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d"); context.clearRect(0, 0, 500, 500); showAxes(context); context.save(); plotSine(context, step, 50); context.restore(); step += 4; window.requestAnimationFrame(draw); } ``` ## Superimposed Sine Waves After I learned to plot a sine wave, I visualized how to draw multiple sine waves in order to achieve the oscillation effect in the animation. It looked pretty cool, so I get it around. It reminds me of [Spirograph](https://en.wikipedia.org/wiki/Spirograph). :smile:  The `step` advances the starting point along the y-axis. ```js var step = 4; for (var i = -4; i < canvas.height; i += step) { plotSine(context, i, 54 + i); } ``` ## Simple Plot My initial attempt to draw a sine wave on an `HTML5` canvas.  ```html