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.
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 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(); }
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; }
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) } }
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(); }
L'Homme et ses Signes d'Adrian Frutiger