« Palimpseste 1 » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 55 : | Ligne 55 : | ||
<pre> | <pre> | ||
// police (taille et fonte) | // police (taille et fonte) | ||
int | int tailleA=198; | ||
PFont fontA = createFont("Tw Cen MT Condensed Extra Bold", | PFont fontA = createFont("Tw Cen MT Condensed Extra Bold",tailleA); | ||
// tableau des instances de lettre du mot palimpseste | // tableau des instances de lettre du mot palimpseste | ||
Ligne 91 : | Ligne 91 : | ||
// on ecrit les lettres de palimpseste | // on ecrit les lettres de palimpseste | ||
background(0); | background(0); | ||
for (int i=0; i<palimpseste.length; i++) { | for (int i=0; i<palimpseste.length; i++) { | ||
palimpseste[i].ecrire(); | palimpseste[i].ecrire(); | ||
Ligne 101 : | Ligne 100 : | ||
// propriétés des instances de la classe | // propriétés des instances de la classe | ||
int id_ltr; | int id_ltr; // identificateur de l'instance | ||
char ltr; | char ltr; // le caractère associé à l'instance | ||
float x0; | int a = 255; // alpha | ||
int c = 255; // couleur | |||
float x; | PFont police = fontA; // police de caractère | ||
int taille = tailleA; // taille de caractère | |||
float transx = 0.0; | float x0; float y0; // coordonnées initiales de l'instance | ||
float transy = 0.0; | float x; float y; // coordonnées de l'instance | ||
float deg = 0.0; | float transx = 0.0; // décalage x | ||
float rotX = 0.0; | float transy = 0.0; // décalage y | ||
float rotY = 0.0; | float deg = 0.0; // angle (en °) de l'instance | ||
float rotZ = 0.0; | 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 | // constructeur de l'instance lettre | ||
Ligne 133 : | Ligne 132 : | ||
rotateZ(radians(rotZ)); | rotateZ(radians(rotZ)); | ||
fill(c,a); | fill(c,a); | ||
textFont(police, taille); | |||
text(ltr, transx, transy); | text(ltr, transx, transy); | ||
popMatrix(); | popMatrix(); |
Version du 18 novembre 2010 à 10:41
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 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(); } }