xxxxxxxxxx
78
let centerX;
let centerY;
let radius;
let brushRadius = 8;
let dotRadiusMin = 0.1;
let dotRadiusMax = 8;
let powerBase = 1.8;
let allDots;
function setup()
{
createCanvas(400, 400);
Begin();
}
function keyPressed()
{
if (keyCode === 32)
Begin();
}
function draw()
{
if (mouseX >= width || mouseY >= height)
return;
for (let x = mouseX - brushRadius; x <= mouseX + brushRadius; ++x)
{
for (let y = mouseY - brushRadius; y <= mouseY + brushRadius; ++y)
{
let dx = x - mouseX;
let dy = y - mouseY;
let distSq = dx * dx + dy * dy;
if (distSq > brushRadius * brushRadius)
continue;
AttemptDrawPoint(x, y);
}
}
}
function Begin()
{
blendMode(BLEND);
background(40);
blendMode(ADD);
allDots = new Set();
centerX = 400 * Math.random();
centerY = 400 * Math.random();
radius = (200 - 10) * Math.random() + 10;
}
function AttemptDrawPoint(x, y)
{
let key = y * width + x;
if (allDots.has(key))
return;
allDots.add(key);
DrawPoint(x, y);
}
function DrawPoint(x, y)
{
let distance = dist(centerX, centerY, x, y);
let delta = abs(distance - radius);
let alpha = pow(powerBase, -delta);
stroke(alpha * 250, alpha * 180, alpha * 50);
strokeWeight((dotRadiusMax - dotRadiusMin) * pow(Math.random(), 3) + dotRadiusMin);
point(x, y);
}