Motifs aléatoires sauvegardés

Porteur(s) du projet : Laura Fournier

Date : Mai 2017

Contexte : Cours de programmation

Travail sur le dessin du motif

Pour cet exercice, j'ai cherché sur open-processing un code qui me permettait de créer et de dessiner des motifs. J'ai travaillé sur ce sujet afin de pouvoir le mettre en relation avec une partie de mon futur mémoire. Pour cela j'ai trouvé "Peintre symétrique", fait par Gábor Törőcsik-Nagy. Pour le rendre un peu plus intéressant, j'ai ajouté une fonction de sauvegarde, afin d'avoir une trace de nos fabuleux motifs! Celle ci se réalise lorsque l'on appuie sur la touche entrée. J'ai également fait de petites modifications au code de base comme par exemple changer la taille du pinceau ou changer et augmenter le nombre de couleurs.

Ce code permet de générer quatre points symétriques qui, à l'aide de la souris, dessinent des motifs aléatoires. De plus nous pouvons les enregistrer afin de les retravailler sur un autre logiciel.

Le programme proposé est inspiré d'un exemple d'OpenProcessing xxxxxxxx--------A RAJOUTER

Photos

Voici des photos de différents exemples que l'on peut faire en terme de motifs.

Code du programme

Le code

Code principal

class Painter {
//attribut
//liée à la sourisPositions et a la fluidité du trait
float x, y;
float easing;
//relatif au changeur de couleurs
color c1, c2, c3, c4, c5;
float counter;
// constructeur
Painter() {
x = 0;
y = 0;
counter = 0;
// changez d'allure ici pour différents effets
// 1 = pas de fluidité du trait
// .01 = fluidité extrême
// .02 à .20 devrait fonctionner correctement
easing = .02;
// modifiez la couleur 3 ici qui est constamment en cycle
// c1 est la première couleur >> alors c2 >> alors c3 >> alors c4
c1 = #03FFEC;
c2 = #0A5D93;
c3 = #FA5838;
c4 = #C7D85A;
}
// pouvoir passer d'une couleur à une autre
color colorChanger() {
color cF1 = lerpColor(c1, c2, counter %1);
color cF2 = lerpColor(c2, c3, counter % 1);
color cF3 = lerpColor(c3, c4, counter % 1);
color cF4 = lerpColor(c1, c4, counter % 1);
color cFinal = c1;
if (int(counter) % 3 == 0) {
cFinal = cF1;
} else if (int(counter) % 3 == 1) {
cFinal = cF2;
} else if (int(counter) % 3 == 2) {
cFinal = cF3;
} else if (int(counter) % 3 == 3) {
cFinal = cF4;
}
counter += 0.005;
return cFinal;
}
void paint() {
// calcul de la fluidité du trait
float targetX = mouseX;
x = x + (targetX - x) * easing;
float targetY = mouseY;
y = y + (targetY - y) * easing;
// affiche les points à la position de la souris
ellipse(x, y, d, d);
ellipse(width-x, y, d, d);
ellipse(x, height-y, d, d);
ellipse(width-x, height-y, d, d);
}
}

Code Class painter

class Painter {
//attribut
//liée à la sourisPositions et a la fluidité du trait
float x, y;
float easing;
//relatif au changeur de couleurs
color c1, c2, c3, c4, c5;
float counter;
// constructeur
Painter() {
x = 0;
y = 0;
counter = 0;
// changez d'allure ici pour différents effets
// 1 = pas de fluidité du trait
// .01 = fluidité extrême
// .02 à .20 devrait fonctionner correctement
easing = .02;
// modifiez la couleur 3 ici qui est constamment en cycle
// c1 est la première couleur >> alors c2 >> alors c3 >> alors c4
c1 = #03FFEC;
c2 = #0A5D93;
c3 = #FA5838;
c4 = #C7D85A;
}
// pouvoir passer d'une couleur à une autre
color colorChanger() {
color cF1 = lerpColor(c1, c2, counter %1);
color cF2 = lerpColor(c2, c3, counter % 1);
color cF3 = lerpColor(c3, c4, counter % 1);
color cF4 = lerpColor(c1, c4, counter % 1);
color cFinal = c1;
if (int(counter) % 3 == 0) {
cFinal = cF1;
} else if (int(counter) % 3 == 1) {
cFinal = cF2;
} else if (int(counter) % 3 == 2) {
cFinal = cF3;
} else if (int(counter) % 3 == 3) {
cFinal = cF4;
}
counter += 0.005;
return cFinal;
}
void paint() {
// calcul de la fluidité du trait
float targetX = mouseX;
x = x + (targetX - x) * easing;
float targetY = mouseY;
y = y + (targetY - y) * easing;
// affiche les points à la position de la souris
ellipse(x, y, d, d);
ellipse(width-x, y, d, d);
ellipse(x, height-y, d, d);
ellipse(width-x, height-y, d, d);
}
}