Newer
Older
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
class ToileProjecteur extends QShape {
private float x, y, z; // Coordonnées de la position
private float largeur;
private float hauteur;
private float profondeur;
private float hauteurActuelle;
private boolean estDeroulee;
private PShape toile;
private PShape barreHaut;
private PShape barreBas;
private PImage texture;
ToileProjecteur(float x, float y, float z) {
super(x, y, z);
this.x = x;
this.y = y;
this.z = z;
this.hauteurActuelle = 0; // Initialement fermée
this.estDeroulee = false; // La toile est fermée au début
}
void creerToile(float largeur, float hauteur, float profondeur, PImage texture) {
this.largeur = largeur;
this.hauteur = hauteur;
this.profondeur = profondeur;
this.texture = texture;
// Créer les différentes parties
creerBarreHaut();
creerBarreBas();
creerToile();
// Créer le groupe de formes
shape = createShape(GROUP);
shape.addChild(barreHaut);
shape.addChild(toile);
shape.addChild(barreBas);
}
private void creerBarreHaut() {
barreHaut = createShape();
barreHaut.beginShape(QUADS);
barreHaut.fill(50, 50, 120);
barreHaut.noStroke();
float epaisseurHaut = 30; // La barre du haut est plus épaisse
float largeurHaut = largeur * 1.1f; // La barre du haut est un peu plus large
// Barre en haut (horizontal)
barreHaut.vertex(-largeurHaut / 2, -hauteur / 2, -profondeur / 2);
barreHaut.vertex(largeurHaut / 2, -hauteur / 2, -profondeur / 2);
barreHaut.vertex(largeurHaut / 2, -hauteur / 2 + epaisseurHaut, -profondeur / 2);
barreHaut.vertex(-largeurHaut / 2, -hauteur / 2 + epaisseurHaut, -profondeur / 2);
barreHaut.vertex(-largeurHaut / 2, -hauteur / 2, profondeur / 2);
barreHaut.vertex(largeurHaut / 2, -hauteur / 2, profondeur / 2);
barreHaut.vertex(largeurHaut / 2, -hauteur / 2 + epaisseurHaut, profondeur / 2);
barreHaut.vertex(-largeurHaut / 2, -hauteur / 2 + epaisseurHaut, profondeur / 2);
barreHaut.endShape(CLOSE);
}
private void creerBarreBas() {
barreBas = createShape();
barreBas.beginShape(QUADS);
barreBas.fill(50, 50, 120);
barreBas.noStroke();
float epaisseurBas = 10; // La barre du bas est plus fine
// Barre en bas
barreBas.vertex(-largeur / 2, hauteur / 2, -profondeur / 2);
barreBas.vertex(largeur / 2, hauteur / 2, -profondeur / 2);
barreBas.vertex(largeur / 2, hauteur / 2 + epaisseurBas, -profondeur / 2);
barreBas.vertex(-largeur / 2, hauteur / 2 + epaisseurBas, -profondeur / 2);
barreBas.vertex(-largeur / 2, hauteur / 2, profondeur / 2);
barreBas.vertex(largeur / 2, hauteur / 2, profondeur / 2);
barreBas.vertex(largeur / 2, hauteur / 2 + epaisseurBas, profondeur / 2);
barreBas.vertex(-largeur / 2, hauteur / 2 + epaisseurBas, profondeur / 2);
barreBas.endShape(CLOSE);
}
private void creerToile() {
toile = createShape();
toile.beginShape(QUADS);
toile.texture(texture);
toile.noStroke();
// Définir la toile
toile.vertex(-largeur / 2, -hauteur / 2 + hauteurActuelle, -profondeur / 2);
toile.vertex(largeur / 2, -hauteur / 2 + hauteurActuelle, -profondeur / 2);
toile.vertex(largeur / 2, -hauteur / 2 + hauteur, profondeur / 2);
toile.vertex(-largeur / 2, -hauteur / 2 + hauteur, profondeur / 2);
toile.endShape(CLOSE);
}
private void mettreAJourToile() {
shape = createShape();
shape.beginShape(QUADS);
shape.texture(texture);
shape.noStroke();
// Barre en haut
shape.addChild(barreHaut);
// La hauteur actuelle contrôle la taille visible de la toile
shape.vertex(-largeur / 2, -hauteur / 2 + hauteurActuelle, -profondeur / 2, 0, 0);
shape.vertex(largeur / 2, -hauteur / 2 + hauteurActuelle, -profondeur / 2, texture.width, 0);
shape.vertex(largeur / 2, -hauteur / 2 + hauteur, profondeur / 2, texture.width, texture.height);
shape.vertex(-largeur / 2, -hauteur / 2 + hauteur, profondeur / 2, 0, texture.height);
// Barre en bas
shape.addChild(barreBas);
shape.endShape();
}
void mettreAJour() {
if (estDeroulee && hauteurActuelle < hauteur) {
hauteurActuelle += 5; // Ajustez la vitesse de déroulement ici
if (hauteurActuelle > hauteur) {
hauteurActuelle = hauteur;
}
} else if (!estDeroulee && hauteurActuelle > 0) {
hauteurActuelle -= 5; // Ajustez la vitesse de fermeture ici
if (hauteurActuelle < 0) {
hauteurActuelle = 0;
}
}
// mettreAJourToile();
}
void derouler() {
estDeroulee = true;
}
void refermer() {
estDeroulee = false;
}
void dessiner() {
shape(shape);
}
}