console
let vertices = [];
const r = 8;
const verticesLength = 20;
function setup() {
createCanvas(600, 400);
for (let i = 0; i < verticesLength; i++) {
let v = createVector(random(width), random(height));
vertices.push(v);
}
}
function draw() {
background(0);
let reached = [];
let unreached = [];
unreached = vertices.slice();
reached.push(unreached[0]);
unreached.splice(0, 1);
while (unreached.length > 0) {
let record = 100000;
let rIndex, uIndex;
for (let i = 0; i < reached.length; i++) {
for (let j = 0; j < unreached.length; j++) {
let v1 = reached[i];
let v2 = unreached[j];
let d = dist(v1.x, v1.y, v2.x, v2.y);
if (d < record) {
record = d;
rIndex = i;
uIndex = j;
}
}
}
stroke(255);
strokeWeight(2);
line(
reached[rIndex].x,
reached[rIndex].y,
unreached[uIndex].x,
unreached[uIndex].y,
);
reached.push(unreached[uIndex]);
unreached.splice(uIndex, 1);
}
for (let i = 0; i < vertices.length; i++) {
const v = vertices[i];
noStroke();
fill(255);
ellipse(v.x, v.y, r * 2, r * 2);
let newX = v.x + random(-5, 5);
let newY = v.y + random(-5, 5);
v.x = constrain(newX, 0, width);
v.y = constrain(newY, 0, height);
}
}
<script src="https://unpkg.com/p5@0.7.2/lib/p5.min.js"></script>
<script src="https://unpkg.com/p5@0.7.2/lib/addons/p5.dom.min.js"></script>