var sin = Math.sin; var tau = Math.PI*2; module.exports = { setup: function(api) { var w = api.getPanelWidth(); var h = api.getPanelHeight(); var generator; if (!this.generator) { generator = ((v,scale) => { scale = scale || 1; return { x: v*w/tau, y: scale * sin(v) }; }); generator.start = 0; generator.end = tau; generator.step = 0.1; generator.scale = h/3; this.generator = generator; } }, drawSine: function(api, dheight) { var w = api.getPanelWidth(); var h = api.getPanelHeight(); var generator = this.generator; generator.dheight = dheight; api.setColor("black"); api.drawLine({x:0,y:h/2}, {x:w,y:h/2}); api.drawFunction(generator, {x:0, y:h/2}); }, drawSlices: function(api, steps) { var w = api.getPanelWidth(); var h = api.getPanelHeight(); var f = w/tau; var area = 0; var c = steps <= 25 ? 1 : 0; api.reset(); api.setColor("transparent"); api.setFill("rgba(150,150,255, 0.4)"); for (var step=tau/steps, i=step/2, v, p1, p2; i