Motif de Cube – Processing

L’objectif de ce code Processing est de générer un motif fait de cubes. Les cubes sont gérés en 3D : le motif est fait de cubes qui se décalent en tournant (en X, Y Z) sur eux mêmes. La taille, la couleur et le décalage de la rotation sont gérés de façon aléatoire.

 

  • Ces motifs ont ensuite été tramés et imprimés sur du papier calque.

 

 

Motif sans trame

 

Motif avec une petite trame

 

Motif avec une grosse trame

 

  • Exemples d’autres motifs générés :

 

  • Les motifs imprimés sur calque : à venir
  • Le code processing : (il faut appuyer sur espace pour que les cubes apparaissent )
float x;
float y;
int z;

//taille du cube :
//float R=random(0,120);
float R;

//espacement entre les cubes :
//float R2=R+random(120);
float R2;

//pas de l'angle de rotation :
//float carre = random(2);
float carre;

//int i=0;
int i;

void setup(){
//fullScreen(P3D);
size(1300,800,P3D);

background(255);

}

void draw(){
if  (keyPressed == true) {

R=random(0,100);
R2=R+random(-R,100);
carre = random(-4,4);
i=0;

println("taille du cube=", R, "px");
println("espace entre deux cubes: ", R2, "px");
println("angle rotation : ", carre, "radians");

cube();
}
}

void cube(){

translate(R, R);

//Première boucle (hauteur)
for (float y = 0; y < height; y = y + R2 ) {

//Seconde boucle (largeur)
for (float x = 0; x < width; x = x + R2) {

pushMatrix();

translate(x,y,z);
//stroke (random(100));
noStroke();
fill(random(250),random(10,200));
rotateX(carre);
rotateY(carre);
rotateZ(carre);
box(R);

popMatrix();

noLoop();

}
}
}

 

  • La 3D sur Processing : lien