MOTIFS ALGORITHMIQUES

Porteur du projet : Coline Januel

Date : Avril & Mai 2018

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ée.

Intention :

Créer un programme réalisant des dessins/motifs algorithmiques en combinant divers objets, nommés “particule” et représentés par des ellipses. Ces objets suivent des règles de déplacement et d'affichage en fonction de la famille à laquelle ils appartiennent (par exemple : “Toutdroit”). Ainsi, chaque particule à des caractéristiques individuelles mais également des caractéristiques communes en fonction de la classe dont elle hérite. Ces caractéristiques régissent alors le mouvement et le mode de représentation des particules. C'est donc la variété et la combinaison de ces modes de représentation qui permettent la variabilité des motifs.

L'utilisateur crée des motifs en agissant en interaction (aller/retour) avec le programme. Les dessins sont alors automatisés à partir de règles mathématiques, géométriques simples et évoluent dans un plan à deux dimensions : le temps (gauche à droite) et l'espace (haut et bas). Il faut savoir que les motifs obtenus ont un début et une fin : ils représentent donc une période de temps suivant une direction précise et non un instantané.

Dans ce programme il y a :

CROCOTIF qui est le lieu de décisions d'affichage. On va dans cette partie du programme choisir : le motif qu'on veut afficher, gérer les paramètres d'affichage...

La classe MOTIFATEUR qui est l'endroit où l'on va instancier les ensembles d'objets particules en combinant diverses classes de particules et en spécifiant leurs attributs.

La classe PARTICULE, abstraite, qui regroupe des caractéristiques & des comportements communs.

LES TOUTDROIT : Les classes de particules “Toutdroit”, “Verticale”, “Oblique” qui sont héritantes de la classe “Particule”.

LES ZAUTRES : La classe de particule “Vague” héritante de la classe “Particule”.

LES ZIGZAG : La classe de particule “ZigZag” héritante de la classe “Particule”, les classes de particules “Pont”, “AleaZag”, “ElectroZag”, “ParaZag” et “MirZag” héritantes de la classe “ZigZag” et enfin la classe de particule “ParaAleaZag” héritante de la classe “AleaZag”.

Explication de la libraire :

Librairie permettant d'exporter les images de l'écran d'affichage en PDF.
*// Appel de la librairie "PDF EXPORT" ://
* import processing.pdf.*;

Dans “void setup(){” :

Commencer enregistrement de l'écran en pdf dans le dossier de travail. L'enregistrement démarre automatiquement lorsque l'on appuie sur le bouton exécuter. Dans “” on inscrit (par exemple “motifsPDF/”+mt.nomDuDernier+“-01.pdf”) :

L'emplacement de l'enregistrement en PDF de l'image (par exemple, ici, le dossier “motifsPDF”) suivi de “/”.

Le nom (numéro) du motif choisi précédemment insctit dans “particules = mt.motif()” . Il s''inscrira automatiquement dans le nom du PDF grâce à la concaténation (“+...+”) et à l'attribut “nomDuDernier” de la classe Motifateur.

Enfin, l'identifiant du PDF suivi de “.pdf”

ATTENTION ! Si l'on ne change pas l'identifiant qui suit le nom du PDF avant chaque enregistrement, le précédent sera remplacé.

beginRecord(PDF, “motifsPDF/”+mt.nomDuDernier+“-04.pdf”);}

Dans “void draw(){” :

Enregistrement PDF se fait une fois que le motif a fini son affichage et que l'on ferme la fenêtre.

* endRecord(); // L'enregistrement s'arrête.
* exit(); // On quitte l'écran animé.}

Explication d'une classe :

Classe héritante de la classe “Particule”, servant à créer une particule “Toutdroit” se déplaçant horizontalement de la gauche vers la droite.

//Déclaration de la classe publique "Toutdroit" héritante de la classe "Particule".//
public class Toutdroit extends Particule {
// Constructeur de la classe "Toutdroit".//
public Toutdroit(float p, float r, color c){
// "this." signifie que c'est bien un attribut de la classe.
this.position = p;
this.rayon = r;
this.couleur = c;
}
// Méthode "afficher" à l'instant donné.
void afficher(int instant){
fill(this.couleur); // Méthode "fill" nous permettant de spécifier la couleur des prochaines formes à dessiner, (ici des ellipses).
ellipse(instant, this.position, 2*this.rayon, 2*this.rayon); // Représentation de la particule par une ellipse.
}
// Méthode "vivre".
void vivre(){}}

Programme :

crocotif.zip