Classe minima di un agente autonomo
Classe di un agente che si sposta casualmente a partire da un punto iniziale (partenza) e inverte la direzione quando supera i 185 pixel di distanza dal centro del canvas.
// width=300 height=300
let agente;
let centro;
function setup() {
createCanvas(300, 300);
centro = createVector(width/2, height/2);
background(200);
agente = new Agente(centro);
}
function draw() {
agente.display();
}
// DEFINIZIONE DELLA CLASSE Agente
class Agente {
constructor( partenza ) {
this.pos = partenza.copy(); // proprietà
this.vel = p5.Vector.random2D();
}
display() {
circle( this.pos.x,this.pos.y, 6 ); // visualizzazione
if (this.pos.dist(centro) > 145) { // aggiornamento
this.vel.mult( -1 );
}
if (random() < 0.33) {
this.vel.rotate( random(-0.4,0.4) );
}
this.pos.add( this.vel );
}
}
class Agente {
constructor( partenza ) {
this.pos = partenza.copy(); // PROPRIETÀ
this.vel = p5.Vector.random2D();
}
display() {
circle( this.pos.x,this.pos.y, 6 ); // VISUALIZZAZIONE
if (this.pos.dist(centro) > 185) { // AGGIORNAMENTO
this.vel.mult( -1 );
}
if (random() < 0.33) {
this.vel.rotate( random(-0.4,0.4) );
}
this.pos.add( this.vel );
}
}
if (this.pos.dist(centro) > 185) {
this.vel.mult( -1 );
}
Inverte i valori x e y di spostamento (e quindi la direzione) se la posizione dell'agente supera i 185 pixel dal centro del canvas.
if (random() < 0.33) {
this.vel.rotate( random(-0.4,0.4) );
}
Con una probabilità del 33%, effettua una piccola rotazione casuale del vettore di spostamento.
this.pos.add( this.vel );
Applica lo spostamento.