Example 1: Pair Collision Swap
Code
let a = { x: 120, y: 200, vx: 2.2, vy: 1.5, r: 30 };
let b = { x: 280, y: 220, vx: -2.4, vy: -1.2, r: 36 };
function setup() {
createCanvas(400, 400);
}
function draw() {
background(250);
move(a); move(b);
const d = dist(a.x, a.y, b.x, b.y);
if (d < a.r + b.r) {
[a.vx, b.vx] = [b.vx, a.vx];
[a.vy, b.vy] = [b.vy, a.vy];
}
fill(255, 45, 140, 180); circle(a.x, a.y, a.r * 2);
fill(20, 30, 40, 170); circle(b.x, b.y, b.r * 2);
}
function move(o) {
o.x += o.vx; o.y += o.vy;
if (o.x < o.r || o.x > width - o.r) o.vx *= -1;
if (o.y < o.r || o.y > height - o.r) o.vy *= -1;
}Try this: Try masses by scaling velocity swap amount with radius.