====== Comment dessiner avec Processing ? ====== * Porteur(s) du projet : Fabienne Edern * Date : Mai 2017 * Contexte : cours de "Culture & pratiques techniques" * Lien : {{:wiki:projets:projets-processing-dsaa1:dessinmain.zip|Programme}} * Source : [[https://www.openprocessing.org/|OpenProcessing]] ===== Le programme ===== Le but de ce projet est de dessiner avec Processing en utilisant la souris ou le touchpad tel un crayon à l'embout stylisé tel un pinceau Photoshop. De plus, la fonction "cp5.addColorWheel" permet de modifier la couleur du fond via une pression de la touche espace une fois la couleur désirée choisie sur la roue des couleurs (mode RVB). Enfin, l'enregistrement du dessin dans le dossier du fichier Processing s'effectue automatiquement lorsque la touche entrée est à son tour pressée. ===== Librairie à télécharger ===== {{:wiki:projets:projets-processing-dsaa1:controlp5.zip|ControlP5}} ControlP5 est une librairie très riche permettant d'ajouter tous types de boutons sur la fenêtre d'affichage, tel que des sliders, des listes, des tableaux... Elle est fourni avec de nombreux exemples visant à connaître l'ensemble des possibilités qu'offre cette librairie. (plus de documentation [[http://www.sojamo.de/libraries/controlP5/|ici]]) ===== Le code ===== ==== Code principal ==== /* Fabienne Edern Programme "Fait moi un dessin avec Processing" */ //importation des librairies import controlP5.*; ControlP5 cp5; //déclaration des variables // variables des lignes boolean miden, smoothFade; SketchLine line0, line1, line2; float x1, y1, x2, y2; int stoixeia = 30, lineAlpha = 50; //épaisseur des lignes // variables des couleurs des lignes int colorL=255,strokeL, strokeValue = 20, strokeBackground = 5; int paintCount = 0, alphaSform; int r0,g0,b0,r1,g1,b1; // variables de la création des lignes float[] x = new float[stoixeia]; //définition de x float[] y = new float[stoixeia]; //définition de y float[] epitaxinsiX = new float[stoixeia]; //application de l'effet sur x float[] epitaxinsiY = new float[stoixeia]; //application de l'effet sur y float[] elastikotita = new float[stoixeia]; float[] aposbesi = new float[stoixeia]; float[] deltaX = new float[stoixeia]; float[] deltaY = new float[stoixeia]; float fxMouse, fyMouse; //calcul de l'emplacement de la souris int c = color(0); //couleur pour controlP5 void setup() { frameRate(300); //vitesse du dessin=nombre d'images par seconde size(900,450); //taille de la fenêtre //initialisation des variables globales line0 = new SketchLine(30); //espacement des lignes permettant de dessiner line1 = new SketchLine(stoixeia); line2 = new SketchLine(stoixeia + 1); line0.calcType( 0.2, 0.65 );// paramètres de la ligne 0 line1.calcType( 0.1, 0.65 );// paramètres de la ligne 1 line2.calcType( 0.3, 0.65 );// paramètres de la ligne 2 cp5 = new ControlP5( this ); //initialisation du controlP5 cp5.addColorWheel("c" , 25 , 10 , 150 ).setRGB(color(0,0,255)); //ajout de la roue de couleurs noStroke(); //pas de contour background(c); //couleur du fond, mode RVB noFill(); //pas de remplissage smooth(); //permet de "lisser" la forme dessinée for (int i=0; i ==== Classe sketch ==== class SketchLine { int stoixeia = 1000, colorR, colorG, colorB, lineAlpha = 25; //application des couleurs float elast, aposv; float[] x = new float[stoixeia]; //définition de x float[] y = new float[stoixeia]; //définition de y float[] epitaxinsiX = new float[stoixeia]; //application de l'effet sur x float[] epitaxinsiY = new float[stoixeia]; //application de l'effet sur y float[] elastikotita = new float[stoixeia]; float[] aposvesi = new float[stoixeia]; float[] deltaX = new float[stoixeia]; float[] deltaY = new float[stoixeia]; float pointX, pointY; //constructeur SketchLine(int stoixeiaVar) { stoixeia = stoixeiaVar; } //méthodes void calcType(float elastikotitaVar, float aposvesiVar) { elast = elastikotitaVar; aposv = aposvesiVar; for (int i=0; i < stoixeia; i++){ //pour i=0 et i inférieur à stoixeia, incrémenter de 1 elastikotita[i] = elast*(.07*(i+1)); aposvesi[i] = aposv-(0.02*i); } } void calcPoints(float pointXVar, float pointYVar) { pointX = pointXVar; pointY = pointYVar; for (int i=0; i ===== Photos ===== {{ :wiki:projets:projets-processing-dsaa1:capture_d_e_cran_2017-05-14_a_17.29.26.png?nolink|}}{{ :wiki:projets:projets-processing-dsaa1:capture_d_e_cran_2017-05-14_a_17.29.47.png?nolink|}}{{ :wiki:projets:projets-processing-dsaa1:capture_d_e_cran_2017-05-14_a_17.35.16.png?nolink|}}{{ :wiki:projets:projets-processing-dsaa1:capture_d_e_cran_2017-05-14_a_17.30.16.png?nolink|}}