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 )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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