xxxxxxxxxx
let num = 75; //円の数
let vecLocation = []; //円の中心の位置ベクトル
let vecVelocity = []; //円の速度ベクトル
let size = [];
let sizeAdd = [];
let color = [];
let colorAdd = [];
function setup() {
createCanvas(windowWidth, windowHeight); //画面を生成
frameRate(60); //フレームレート
for (let i = 0; i < num; i++) {
vecLocation[i] = createVector(width / 2, height / 2);
vecVelocity[i] = createVector(random(-3, 3), random(-3, 3));
size[i] = random(1,50);
sizeAdd[i] = random(-3,3);
color[i] = random(0,255);
colorAdd[i] = random(-3,3);
}
}
function draw() {
background(0); //背景を描画
noStroke(); //枠線なし
//円の数だけくりかえす
for (let i = 0; i < num; i++) {
fill(color[i]); //塗りの色
vecLocation[i].add(vecVelocity[i]); //円の座標を更新
ellipse(vecLocation[i].x, vecLocation[i].y, size[i], size[i]); //指定した位置に円を描画
size[i] = size[i] + sizeAdd[i];
color[i] = color[i] + colorAdd[i];
if (vecLocation[i].x < 0 || vecLocation[i].x > width) { //もし画面の左端、または右端に到達したら
vecVelocity[i].x = vecVelocity[i].x * -1; //X方向のスピードを反転
}
if (vecLocation[i].y < 0 || vecLocation[i].y > height) { //もし画面の下端、または上端に到達したら
vecVelocity[i].y = vecVelocity[i].y * -1; //Y方向のスピードを反転
}
if (size[i] < 0 || size[i] > 120) {
sizeAdd[i] = sizeAdd[i] * -1; //Y方向のスピードを反転
}
if (color[i] < 0 || color[i] > 255){
colorAdd[i] = colorAdd[i]* -1;
}
}
}