let img1, img2;
let goods;
let cnt = 0;
function preload() {
img1 = loadImage("/assets/exchange.jpg");
img2 = loadImage("/assets/star.png");
}
function setup() {
createCanvas(600, 600);
background(0);
strokeWeight(0.5);
angleMode(DEGREES);
stroke(80, 68, 97);
imageMode(CENTER);
fill(200, 200, 255, 10);
noStroke();
goods = [];
nI = 15;
r = 150;
for (let i = 0; i < nI; i++) {
goods.push(new Item(r * cos((i * 360) / nI), r * sin((i * 360) / nI), i));
}
n1 = floor(random(0, nI - 0.001));
n2 = floor(random(0, nI - 0.001));
p1 = createVector(goods[n1].x, goods[n1].y);
p2 = createVector(goods[n2].x, goods[n2].y);
}
function draw() {
translate(width / 2, height / 2);
t = frameCount / 2;
push();
cnt++;
rotate(-cnt / 40);
image(img1, 0, 0, 900, 900);
pop();
strokeWeight(0.8);
for (let i = 0; i < goods.length; i++) {
for (let j = 0; j < goods[i].n + 1; j++) {
stroke(205, 205, 255, 100 - j * 4);
image(
img2,
goods[i].x + 10 * cos((j * 360) / (goods[i].n + 1) - cnt / 10),
goods[i].y + 10 * sin((j * 360) / (goods[i].n + 1) - cnt / 10),
30,
30
);
}
}
for (let i = 0; i < goods.length; i++) {
for (let j = 0; j < 10 + 1; j++) {
push();
stroke(255, 255, 255, 100 - j * 4);
scale(1 - j * 0.1);
circle(goods[i].x, goods[i].y, 50 - j * 2);
pop();
}
}
if (t % 100 === 0) {
n1 = floor(random(0, nI - 0.001));
n2 = floor(random(0, nI - 0.001));
p1 = createVector(goods[n1].x, goods[n1].y);
p2 = createVector(goods[n2].x, goods[n2].y);
frameCount = 0;
}
if (n1 === n2) {
p1 = createVector(goods[n1].x, goods[n1].y);
goods[n1].x = p1.x + (r / 100) * sin((t * 360) / 100);
goods[n1].y =
p1.y + (r / 100) * cos((t * 360) / 100) * sin((t * 360) / 100);
} else {
goods[n1].x = p1.x - ((p1.x - p2.x) / 100) * (t % 100);
goods[n1].y = p1.y - ((p1.y - p2.y) / 100) * (t % 100);
goods[n2].x = p2.x + ((p1.x - p2.x) / 100) * (t % 100);
goods[n2].y = p2.y + ((p1.y - p2.y) / 100) * (t % 100);
}
}
class Item {
constructor(x, y, n) {
this.x = x;
this.y = y;
this.n = n;
}
}