nearest search in circle
@author
int num = 3000;
ArrayList<PVector> reached;
ArrayList<PVector> unreached;
void setup(){
size(500, 500);
frameRate(300);
reached = new ArrayList<PVector>();
unreached = new ArrayList<PVector>();
for(int i = 0; i < num; i++){
float size = map(pow(random(1), 1.0 / 2.0), 0, 1, 0, 200);
float angle = random(TWO_PI);
unreached.add(new PVector(size * cos(angle), size * sin(angle)));
}
reached.add(unreached.remove(0));
background(102, 9, 28);
strokeWeight(2);
stroke(255, 209, 23);
}
void draw(){
if(unreached.size() != 0){
translate(width / 2, height / 2);
float minD = 10000000;
PVector minRp = null;
PVector minUp = null;
for(PVector rp: reached){
for(PVector up: unreached){
float d = PVector.dist(rp, up);
if(d < minD){
minD = d;
minRp = rp;
minUp = up;
}
}
}
line(minRp.x, minRp.y, minUp.x, minUp.y);
reached.add(minUp);
unreached.remove(minUp);
}
}