var React = require("react"); var Locale = require("../../../lib/locale"); var locale = new Locale(); var page = "arclength"; var sin = Math.sin; var tau = Math.PI*2; var Arclength = React.createClass({ getDefaultProps: function() { return { title: locale.getTitle(page) }; }, 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{ locale.getContent(page, this) }; } }); module.exports = Arclength;