{
var colourBase = 200;
var invertColour = true;
function increaseHue () {
if (colourBase < 360) { colourBase += 2}
else {colourBase = 0}
}
function decreaseHue () {
if (colourBase > 0) {colourBase -=2}
else {colourBase = 360}
}
function invertHue() {
invertColour = !invertColour;
}
function range(n) {
return Array.from((Array(n)).keys()) ;
}
function hslColorChooser(level) {
var l = Math.floor(level * 100);
if (invertColour) {
l = Math.floor(100 - l);
}
return "hsl("+ colourBase + ", 50%, " + l +"%)";
};
function randomInt(lessThan){
var selection = Math.floor(Math.random()*(lessThan));
return selection;
};
const size = 400;
let piles = 500;
let sandcount = 200;
let dotSize = 3;
let sand = [];
let wavepool = new WavePool();
var waveController = new WaveController(wavepool);
waveController.newWave();
waveController.newWave();
waveController.newWave();
wavepool.waves[0].fn += 2;
wavepool.waves[0].fn += 1;
const svg = d3.create('svg')
.attr('width', size)
.attr('height', size);
for(var p=0;p<piles;p++){
for (var i = 0; i < sandcount; i ++){
let p = new RandomPoint(size);
sand.push(p);
}
svg.selectAll("circle")
.data(sand)
.enter().append("circle")
.attr("cx", function(s) {
return s.x;})
.attr("cy", function(s) {
return s.y;})
.attr("r", function(s) { return dotSize; })
.attr("class","dot")
.style("fill", function(s){
let value = wavepool.value(s);
return hslColorChooser(value);
});
await Promises.delay(10)
yield svg.node();
}
}