xxxxxxxxxx
63
let waves = [];
let offsetY = 0;
let gradientStart;
let gradientEnd;
function setup()
{
createCanvas(400, 400);
offsetY = height / 2;
gradientStart = color(255, 48, 59);
gradientEnd = color(175, 82, 222);
background(0);
for(let i = 0; i < 5; i++) {
waves.push(new Wave(random(20, 50), random(100, 300), random(TWO_PI)));
}
}
function draw()
{
noStroke();
fill(0, 45);
rect(0, 0, width, height);
let points = [];
for(let x = 0; x <= width; x += 5)
{
let y = 0;
for(let wave of waves)
{
y += wave.evaluate(x);
}
points.push(createVector(x, y + offsetY));
}
stroke(255);
for(let i = 0; i < points.length - 1; i++)
{
let a = points[i];
let b = points[i + 1];
let weight = map(a.y, 0, height, 7, 1);
strokeWeight(weight);
stroke(getGradientColor(a.y));
line(a.x, a.y, b.x, b.y);
}
for(let wave of waves) {
wave.update();
}
}
function getGradientColor(y)
{
let r = map(y, 0, height, red(gradientStart), red(gradientEnd));
let g = map(y, 0, height, green(gradientStart), green(gradientEnd));
let b = map(y, 0, height, blue(gradientStart), blue(gradientEnd));
return color(r, g, b);
}