« Palimpseste 1 » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 100 : | Ligne 100 : | ||
class lettre { | class lettre { | ||
// propriétés des instances de la classe | |||
int id_ltr; // identificateur de l'instance | int id_ltr; // identificateur de l'instance | ||
char ltr; // le caractère associé à l'instance | char ltr; // le caractère associé à l'instance | ||
Version du 18 novembre 2010 à 08:18
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); // 3PD, mode pour une simulation 3D à l'écran
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 {
// propriétés des instances de la classe
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();
}
}