<script src='https://d3js.org/d3.v6.min.js'></script> was added in the page head.
xxxxxxxxxx
%%html
<svg id='svg10_02' style='background-color:ghostwhite;'></svg>
<script>
var n=640,m=30; var i,j,k,xmax,xmin;
var margin={top:m,right:m,bottom:m,left:m},
width=580-margin.left-margin.right,
height=600-margin.top-margin.bottom;
function randi(xmin,xmax){
return Math.floor(Math.random()*(xmax-xmin+1))+xmin;};
function gcolor(i){var r=randi(20*i,255),
g=randi(20*i,255),
b=randi(20*i,255);
return '#'+r.toString(16)+g.toString(16)+b.toString(16);}
var a=randi(7,15),b=randi(10,24),p=.01;
function make_data(j){return d3.range(0,n).map(function(i) {
return {'x':4*j*(Math.cos(p*i)+Math.cos(a*p*i)/2+
Math.sin((a+b)*p*i)/3),
'y':4*j*(Math.sin(p*i)+Math.sin(a*p*i)/2+
Math.cos((a+b)*p*i)/3)}});};
var xScale=d3.scaleLinear().domain([-24,24]).range([0,width+2*m]),
yScale=d3.scaleLinear().domain([-24,24]).range([height+2*m,0]);
var ttr1='translate('+margin.left+','+margin.top+')',
ttr2='translate('+20+','+40+')';
var svg2=d3.select('#svg10_02')
.attr('width',width+margin.left+margin.right)
.attr('height',height+margin.top+margin.bottom)
.attr('transform',ttr1);
var line=d3.line().curve(d3.curveMonotoneX)
.x(function(d){return xScale(d.x);})
.y(function(d){return yScale(d.y);});
for (k=1; k<4; k++) {var data=make_data(k);
svg2.append('path').datum(data)
.attr('class','line').attr('d',line)
.attr('fill','none').attr('stroke-width',2)
.transition().duration(10000)
.styleTween('stroke',function(){
var col1=gcolor(k),col2=gcolor(k);
return d3.interpolate(col1,col2);});};
svg2.append('text').attr(ttr2)
.style('fill','#aaa').text('a='+a+'; b='+b);
No comments:
Post a Comment