Random walks: Difference between revisions
From JSXGraph Wiki
A WASSERMANN (talk | contribs) No edit summary |
A WASSERMANN (talk | contribs) No edit summary |
||
Line 29: | Line 29: | ||
var brd = JXG.JSXGraph.initBoard('jxgbox', {originX: 300, originY: 300, unitX: 3, unitY: 3}); | var brd = JXG.JSXGraph.initBoard('jxgbox', {originX: 300, originY: 300, unitX: 3, unitY: 3}); | ||
var t = brd.createElement('turtle'); | var t = brd.createElement('turtle'); | ||
HSV2RGB = function(H,S,V) { | |||
var R,G,B, f,i,hTemp, p,q,t; | |||
if (S==0) { | |||
if (isNaN(H)) { | |||
R = V; | |||
G = V; | |||
B = V; | |||
} else { | |||
return '#000000'; | |||
} | |||
} else { | |||
if (H>=360) { | |||
hTemp = 0.0; | |||
} else { | |||
hTemp = H; | |||
} | |||
hTemp = hTemp / 60; // h is now IN [0,6) | |||
i = Math.floor(hTemp); // largest integer <= h | |||
f = hTemp - i; // fractional part of h | |||
p = V * (1.0 - S); | |||
q = V * (1.0 - (S * f)); | |||
t = V * (1.0 - (S * (1.0 - f))); | |||
switch (i) { | |||
case 0: R = V; G = t; B = p; break; | |||
case 1: R = q; G = V; B = p; break; | |||
case 2: R = p; G = V; B = t; break; | |||
case 3: R = p; G = q; B = V; break; | |||
case 4: R = t; G = p; B = V; break; | |||
case 5: R = V; G = p; B = q; break; | |||
} | |||
} | |||
R = Math.round(R*255).toString(16); R = (R.length==0)?'00':((R.length==1)?'0'+R:R); | |||
G = Math.round(G*255).toString(16); G = (G.length==0)?'00':((G.length==1)?'0'+G:G); | |||
B = Math.round(B*255).toString(16); B = (B.length==0)?'00':((B.length==1)?'0'+B:B); | |||
return '#'+R+G+B; | |||
} | |||
function run() { | function run() { | ||
Line 45: | Line 83: | ||
sumdist += dist; | sumdist += dist; | ||
t.home(); | t.home(); | ||
t.setPenColor(HSV2RGB(Math.round(Math.random()*255),Math.random(),Math.random())); | |||
} | } | ||
$('output').value = (sumdist/nr).toFixed(3); | $('output').value = (sumdist/nr).toFixed(3); |
Revision as of 07:26, 27 May 2009
Source code
<jsxgraph width="600" height="600">
var brd = JXG.JSXGraph.initBoard('jxgbox', {originX: 300, originY: 300, unitX: 3, unitY: 3});
var t = brd.createElement('turtle');
function run() {
var i,j,dist,sumdist=0.0;
var stepSize = 5;
brd.suspendUpdate();
var nr = $('number').value*1;
for (i=0;i<nr;i++) {
for (j=0;j<100;j++) {
var a = Math.floor(360*Math.random());
t.right(a);
t.forward(stepSize);
}
dist = t.pos[0]*t.pos[0]+t.pos[1]*t.pos[1];
sumdist += dist;
t.home();
}
$('output').value = (sumdist/nr).toFixed(3);
brd.unsuspendUpdate();
}
function clearturtle() {
sumist = 0.0
t.cs();
}
</jsxgraph>