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

Random Text