Outils pour utilisateurs

Outils du site


wiki:projets:generateur-de-signe:generateur-de-signe

Projet Processing : Générateur de Signe

  • Porteur(s) du projet : Mégan Dorigo
  • Date : 14/05/2018
  • Licence : libre !
  • Contexte : Labo expérimentations & recherches. Réaliser un programme Processing incluant l'utilisation d'une librairie et d'une classe que vous avez développé.
  • Sources : generateur_7.zip

Intention

Créer un programme générant aléatoirement des signes, en combinant de 0 à 3 signes afin de créer de nouveaux signes primaires pour pouvoir ensuite en dégager une interprétation personnelle, suivant l'exemple des interprétations faites par Adrian Frutiger dans son livre L'Homme et ses Signes.

Ce programme part de neuf signes primaires : carré, rectangle, cercle, croix, triangle, ligne, flèche, coin et point qui sont sous forme d'image en .png et qui, par association au hasard, forment un signe complexe composé de 0 à 3 signes à la fois.

Dans ce programme il y a

  • Un tableau d'images contenant les neuf images de signes primaires,
  • Ces images sont appelées via un tableau de texte contenant leurs noms,
  • Une librairie d'export en pdf,
  • Un entier N permettant d'afficher entre 0 et 3 images à la fois,
  • La possibilité d'enregistrer le signe généré sous pdf avec le nom à taper manuellement,
  • La possibilité de regénérer un nouveau signe lorsqu'on clique sur le programme.

Le tableau d'images

L'utilisation de tableaux permet de gérer un grand nombre d'unité à la fois et de les faire évoluer de manière égales les unes aux autres. La création du tableau se fait par l'apparition des [] avant le nom du tableau (signe) et après le type de tableau que l'on créé (PImage).

 // Tableau d'images
 PImage[] signe;

 void setup() {
    //Appel des images via le dossier texte
    nomSigne = loadStrings("nomSigne.txt");
  
    //Création du tableau d'image 
    signe = new PImage[nomSigne.length];
 }

La librairie

La librairie PDF permet d'enregistrer des documents PDF avec un nom et un dossier d'enregistrement précisés.

 // Appel de la librairie "PDF EXPORT"
 import processing.pdf.*;
 
 void setup() {
    //Nom de l'enregistrement sous pdf, dans le dossier signesPDF. Changer manuellement le nom à chaque nouvel enregistrement
    beginRecord(PDF, "signesPDF/signe_01.pdf");
 }
 
 void draw() { 
    //l'enregistrement s'arrête
    endRecord();
 }

L'affichage des images

Il faut appeler les images qui sont dans le fichier data pour pouvoir les utiliser ensuite dans le programme. Pour cela, au lieu de les appeler une par une, elles sont listées dans un fichier .txt appelé nomSigne.txt, qui lui nomme les images qui sont donc appelées. Cela permet de pouvoir modifier la liste des images appelées sans toucher au code en lui-même.

 void setup() {
    //Appel des images via le dossier texte
    nomSigne = loadStrings("nomSigne.txt");
  
    for (int i=0;i<nomSigne.length;i++){
       PImage im = loadImage(nomSigne[i]);
       signe[i] = im;
    }

Générer aléatoirement

La boucle “pour” permet d'afficher un certain nombre d'image. Il y a entre 0 et 3 images qui peuvent être affichées en même temps. Ensuite, il y a N nombres générées (donc entre 0 et 3 nombres générées) qui eux-même seront entre 0 et 8 car il y a 9 (i) images en tout. Ainsi, il y aura entre 0 et 3 fois (N) des chiffres générées entre 0 et 8 (i). C'est comme cela que le choix des images générées seront fait.

De plus, la position de l'image en x sera calculée aléatoirement entre 200 et 400 pixels. La position de l'image en y sera calculée aléatoirement entre 0 et 500 pixels. La taille en largeur et en hauteur de ces images seront de 300 pixels.

 void draw() { 
    int N = (int)random(0,4); // nombre d'image N à afficher, entre 0 et 3
    for (int i=0;i<N;i++){ // répéter N fois
       int indiceSigne = floor(random(0,signe.length)); //Générer un nombre aléatoire entre 0 et le nombre d'image total
       image(signe[indiceSigne],random(200,400),random(0,500), 300, 300); //image(nom,random(position x),random(position y),largeur,hauteur)
     }
 }
 

Redessiner par le clic

Cette fonction permet qu'à chaque clic, ce qui est dans draw() se redessine à nouveau, et ainsi il y a un nouveau calcul des images et donc un nouveau signe généré.

 void mousePressed () { 
    redraw();
 }
 

Quelques signes générés

Références

L'Homme et ses Signes d'Adrian Frutiger

Sources

wiki/projets/generateur-de-signe/generateur-de-signe.txt · Dernière modification: 2018/05/14 20:51 (modification externe)