Palimpseste 1

De Wikilipo
Aller à la navigation Aller à la recherche

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();
  }

}