« Palimpseste 1 » : différence entre les versions
Aucun résumé des modifications |
(//) |
||
| Ligne 48 : | Ligne 48 : | ||
Le mot est centré horizontalement et verticalement. | Le mot est centré horizontalement et verticalement. | ||
==La classe d'objet <code>lettre</code>== | |||
Ci-dessous, le même sketch processing développé avec un objet <code>lettre</code>, dont les instances sont ici chacune des lettres du mot "palimpseste". Chaque instance a des propriétés (un ID, un contenu/caractère, des coordonnées sur le plan, des coordonnées de translation, un degré de rotation sur le plan, des mesures de rotation dans l'axe X, Y et Z, une valeur alpha d'opacité, de teinte de gris. Vous pouvez y ajouter d'autres propriétés dont vous auriez besoin. À cette classe d'objet <code>lettre</code> sont liées un constructeur <code>lettre</code> et une méthode <code>ecrire</code> qui sert à afficher les instances à l'écran selon leurs propriétés. Là encore, vous pouvez décider de créer vos méthodes dont vous auriez besoin. | |||
<pre> | |||
// police (taille et fonte) | |||
int taille=198; | |||
PFont fontA = createFont("Tw Cen MT Condensed Extra Bold",taille); | |||
// tableau des instances de lettre du mot palimpseste | |||
lettre [] palimpseste = new lettre [0]; | |||
// variables initiales | |||
int xinit= -5; | |||
int yinit= 284; | |||
// initialisation | |||
void setup() { | |||
size(854, 480, P3D); // selon le picoprojecteur choisi (rapport 16:9) | |||
background(0); // fond noir | |||
smooth(); | |||
noStroke(); | |||
//construction des instances de lettre et leur affectation dans le tableau de lettres "palimpseste" | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('p',1,0.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('a',2,91.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('l',3,180.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('i',4,228.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('m',5,276.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('p',6,407.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('s',7,497.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('e',8,569.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('s',9,649.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('t',10,721.0+xinit,0.0+yinit)); | |||
palimpseste = (lettre[]) append(palimpseste, new lettre('e',11,775.0+xinit,0.0+yinit)); | |||
} | |||
void draw() { | |||
// on ecrit les lettres de palimpseste | |||
background(0); | |||
textFont(fontA); | |||
for (int i=0; i<palimpseste.length; i++) { | |||
palimpseste[i].ecrire(); | |||
} | |||
} | |||
class lettre { | |||
int id_ltr; // identificateur de l'instance | |||
char ltr; // le caractère associé à l'instance | |||
float x0; | |||
float y0; // coordonnées initiales de l'instance | |||
float x; | |||
float y; // coordonnées de l'instance | |||
float transx = 0.0; | |||
float transy = 0.0; | |||
float deg = 0.0; // angle (en °) de l'instance | |||
float rotX = 0.0; // angle de rotation axe des X | |||
float rotY = 0.0; // angle de rotation axe des Y | |||
float rotZ = 0.0; // angle de rotation axe des z | |||
int a = 255; // alpha | |||
int c = 255; // couleur | |||
// constructeur de l'instance lettre | |||
lettre (char L, int Lid, float Lx, float Ly) { | |||
ltr = L; | |||
id_ltr = Lid; | |||
x = x0 = Lx; | |||
y = y0 = Ly; | |||
} | |||
// methode d'écriture de l'instance sur le plan | |||
void ecrire() { | |||
pushMatrix(); | |||
translate(x,y); | |||
rotate(radians(deg)); | |||
rotateX(radians(rotX)); | |||
rotateY(radians(rotY)); | |||
rotateZ(radians(rotZ)); | |||
fill(c,a); | |||
text(ltr, transx, transy); | |||
popMatrix(); | |||
} | |||
} | |||
</pre> | |||
Version du 18 novembre 2010 à 08:10
Description
Première phase, statique, de Palimpseste. Le mot est projeté en superposition par tous les modules. Même mot, même police, même taille, même disposition.
Quelques contraintes
- format: 854 x 480, pour un picoprojecteur 16:9 comme les 3 candidats (Acer, Optoma, Samsung) les plus sérieux
- fond noir
- contenu en blanc ou teintes de gris
- le mot choisi: "palimpseste"
- police "condensed": la police choisie est "Tw Cen MT Condensed Extra Bold" (à télécharger dans la bibliothèque des fontes du système).
- déclenchement manuel de la phase 2
Code processing
Voici le code du premier état de la pièce.
PFont fontA;
int x=-5; //décalage horizontal
int y=284; //décalage vertical
int z=198; //taille de police
void setup() {
size(854, 480); // selon le picoprojecteur choisi (rapport 16:9)
background(0); // fond noir
fontA = createFont("Tw Cen MT Condensed Extra Bold",z); // définition de la police
noLoop();
}
void draw() {
textFont(fontA, z); //
fill(255); // couleur de fonte: blanc
//écriture du mot lettre à lettre
text("p",x,y);
text("a",91+x,y);
text("l",180+x,y);
text("i",228+x,y);
text("m",276+x,y);
text("p",407+x,y);
text("s",497+x,y);
text("e",569+x,y);
text("s",649+x,y);
text("t",721+x,y);
text("e",775+x,y);
}
Le mot est écrit lettre par lettre, de sorte à faciliter le traitement que l'on voudra opérer, en phase 2 et phases ultérieures, sur chacune d'entre elles.
Le mot est centré horizontalement et verticalement.
La classe d'objet lettre
Ci-dessous, le même sketch processing développé avec un objet lettre, dont les instances sont ici chacune des lettres du mot "palimpseste". Chaque instance a des propriétés (un ID, un contenu/caractère, des coordonnées sur le plan, des coordonnées de translation, un degré de rotation sur le plan, des mesures de rotation dans l'axe X, Y et Z, une valeur alpha d'opacité, de teinte de gris. Vous pouvez y ajouter d'autres propriétés dont vous auriez besoin. À cette classe d'objet lettre sont liées un constructeur lettre et une méthode ecrire qui sert à afficher les instances à l'écran selon leurs propriétés. Là encore, vous pouvez décider de créer vos méthodes dont vous auriez besoin.
// police (taille et fonte)
int taille=198;
PFont fontA = createFont("Tw Cen MT Condensed Extra Bold",taille);
// tableau des instances de lettre du mot palimpseste
lettre [] palimpseste = new lettre [0];
// variables initiales
int xinit= -5;
int yinit= 284;
// initialisation
void setup() {
size(854, 480, P3D); // selon le picoprojecteur choisi (rapport 16:9)
background(0); // fond noir
smooth();
noStroke();
//construction des instances de lettre et leur affectation dans le tableau de lettres "palimpseste"
palimpseste = (lettre[]) append(palimpseste, new lettre('p',1,0.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('a',2,91.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('l',3,180.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('i',4,228.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('m',5,276.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('p',6,407.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('s',7,497.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('e',8,569.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('s',9,649.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('t',10,721.0+xinit,0.0+yinit));
palimpseste = (lettre[]) append(palimpseste, new lettre('e',11,775.0+xinit,0.0+yinit));
}
void draw() {
// on ecrit les lettres de palimpseste
background(0);
textFont(fontA);
for (int i=0; i<palimpseste.length; i++) {
palimpseste[i].ecrire();
}
}
class lettre {
int id_ltr; // identificateur de l'instance
char ltr; // le caractère associé à l'instance
float x0;
float y0; // coordonnées initiales de l'instance
float x;
float y; // coordonnées de l'instance
float transx = 0.0;
float transy = 0.0;
float deg = 0.0; // angle (en °) de l'instance
float rotX = 0.0; // angle de rotation axe des X
float rotY = 0.0; // angle de rotation axe des Y
float rotZ = 0.0; // angle de rotation axe des z
int a = 255; // alpha
int c = 255; // couleur
// constructeur de l'instance lettre
lettre (char L, int Lid, float Lx, float Ly) {
ltr = L;
id_ltr = Lid;
x = x0 = Lx;
y = y0 = Ly;
}
// methode d'écriture de l'instance sur le plan
void ecrire() {
pushMatrix();
translate(x,y);
rotate(radians(deg));
rotateX(radians(rotX));
rotateY(radians(rotY));
rotateZ(radians(rotZ));
fill(c,a);
text(ltr, transx, transy);
popMatrix();
}
}