Palimpseste 1
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, une valeur alpha d'opacité, de teinte de gris, une police de caractère, une taille de police, 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, etc.). 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 tailleA = 198; PFont fontA = createFont("Tw Cen MT Condensed Extra Bold",tailleA); // 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); 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 int a = 255; // alpha int c = 255; // couleur PFont police = fontA; // police de caractère int taille = tailleA; // taille de caractère float x0; float y0; // coordonnées initiales de l'instance float x; float y; // coordonnées de l'instance float transx = 0.0; // décalage x float transy = 0.0; // décalage y 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 // 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); textFont(police, taille); text(ltr, transx, transy); popMatrix(); } }