Approximation of the circle area: Difference between revisions
From JSXGraph Wiki
A WASSERMANN (talk | contribs) No edit summary |
A WASSERMANN (talk | contribs) No edit summary |
||
Line 45: | Line 45: | ||
c.updateDataArray = function() { | c.updateDataArray = function() { | ||
var r = 1, n = Math.floor(N.Value()), x = [0], y = [0], | var r = 1, n = Math.floor(N.Value()), | ||
h = r*Math.cos( | x = [0], y = [0], | ||
s = r*Math.sin( | phi = Math.PI/n, | ||
i, j, px = 0, py = 0, sgn = 1, | h = r*Math.cos(phi), | ||
d = 16, dt = | s = r*Math.sin(phi), | ||
i, j, | |||
px = 0, py = 0, sgn = 1, | |||
d = 16, | |||
dt = phi/d, | |||
pt; | |||
for (i=0;i<n;i++) { | for (i=0;i<n;i++) { | ||
Line 55: | Line 60: | ||
pt = dt*j; | pt = dt*j; | ||
x.push(px+r*Math.sin(pt)); | x.push(px+r*Math.sin(pt)); | ||
y.push(sgn*r*Math.cos(pt)-(sgn-1)*h*0.5); | |||
} | } | ||
px += s; | px += s; |
Revision as of 14:00, 11 August 2009
The underlying JavaScript code
<jsxgraph width="700" height="500">
board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-2,2,8,-2], keepaspectratio:true, axis:true});
var N = board.createElement('slider', [[0,1.5],[3,1.5],[1,3,40]], {name:'n',snapWidth:1});
board.createElement('circle',[[0,0],1],{strokeWidth:1});
var c = board.createElement('curve', [[0],[0]],{trace:true, strokecolor:'red', strokeWidth:2});
c.updateDataArray = function() {
var r = 1, n = Math.floor(N.Value()),
x = [0], y = [0],
phi = Math.PI/n,
h = r*Math.cos(phi),
s = r*Math.sin(phi),
i, j,
px = 0, py = 0, sgn = 1,
d = 16,
dt = phi/d,
pt;
for (i=0;i<n;i++) {
for (j=-d;j<=d;j++) {
pt = dt*j;
x.push(px+r*Math.sin(pt));
y.push(sgn*r*Math.cos(pt)-(sgn-1)*h*0.5);
}
px += s;
sgn *= (-1);
}
x.push((n-1)*s);
y.push(h+(sgn-1)*h*0.5);
this.dataX = x;
this.dataY = y;
}
board.update();
</jsxgraph>