« 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 à 10: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(); } }