En travaillant dans le traitement, j'essaye de construire mon premier patch génératif. Ce que je veux faire, c'est commencer à dessiner un cercle quelque part sur l'écran (un point suivant le chemin d'un cercle), mais après un laps de temps aléatoire, le cercle se brise, la ligne va dans une direction aléatoire pendant un laps de temps aléatoire et commence à dessiner un nouveau cercle ailleurs.Comment puis-je dessiner un cercle, faire ce cercle et commencer à dessiner ailleurs?
En ce moment, j'ai le cercle dessiné, et j'ai un mécanisme à bascule qui s'allume et s'éteint après une période de temps aléatoire. Je n'arrive pas à comprendre comment le faire «sortir» de ce cercle original, encore moins le faire démarrer un nouveau cercle ailleurs. Quelqu'un aurait-il des conseils sur la façon d'accomplir cela? Je pense que cela pourrait avoir un effet visuel intéressant.
Rotor r;
float timer = 0;
boolean freeze = false;
void setup() {
size(1000,600);
smooth();
noFill();
frameRate(60);
background(255);
timeLimit();
r = new Rotor(random(width),random(height),random(40,100));
}
void draw() {
float t = frameCount/100.0;
timer = timer + frameRate/1000;
r.drawRotor(t);
if(timer > timeLimit()){
timer = 0;
timeLimit();
if(freeze == true){
freeze = false;
}else{
freeze = true;
}
background(255);
}
}
float timeLimit(){
float timeLimit = random(200);
return timeLimit;
}
Classe rotor:
class Rotor {
color c;
int thickness;
float xPoint;
float yPoint;
float radius;
float angle = 0;
float centerX;
float centerY;
Rotor(float cX, float cY, float rad) {
c = color(0);
thickness = 1;
centerX = cX;
centerY = cY;
radius = rad;
}
void drawRotor(float t) {
stroke(c);
strokeWeight(thickness);
angle = angle + frameRate/1000;
xPoint = centerX + cos(angle) * radius;
yPoint = centerY + sin(angle) * radius;
ellipse(xPoint, yPoint,thickness,thickness);
}
}