=====FORMES ALÉATOIRES - processing===== Créer des formes aléatoires et géométriques avec le logiciel processing [[http://www.tonerkebab.fr/wiki/doku.php/wiki:karma:amandine-rossignol:amandine-rossignol|KARMA]] {{:wiki:tutoriels:formes_aleatoire:170202_094637_1999.png|}} {{:wiki:tutoriels:formes_aleatoire:170202_105631_1505.png|}} {{:wiki:tutoriels:formes_aleatoire:170202_092254_4147.png|}} import processing.pdf.*; import java.util.Calendar; boolean recordPDF = false; color col = color(143, 118, 44, 100); float lineLength = 1; float angle = 0; float angleSpeed = 2.0; void setup() { // plein écran ( fullscreen fonctionne seulement avec processing 3, sinon il faut le remplacer par size(displayWidth, displayHeight) fullScreen(); background(255); //ajout d'un effet lisse au formes geométriques, plus doux smooth(); //le curseur est une croix à la place de la flèche habituelle cursor(CROSS); // si vous voulez une main : cursor(HAND); } void draw() { if (mousePressed) { // matrice donné pushMatrix(); // définit la largeur du trait strokeWeight(1); noFill(); //donne la couleur utilisé - col > désigne color, appelé au tout début stroke(col); translate(mouseX, mouseY); //rotation de l'angle de tracage - en relation avec le pushmatrix et le popmatrix - multiplie la matrice donné par pushmatrix et lui permet une rotation rotate(radians(angle)); line(0, 0, lineLength, 0); //autres exemples : //curve (10, 56, 38, 16, 93, 54, 93, 81 ); //float radius = width/15 + noise(frameCount*20) * width/5; //ellipse(width/600,height/10,radius,radius); //s'utilise avec le pushmatrix - generatif popMatrix(); //permet d'avoir un angle constant dans le tracage, de tourner et à ce que le tracage soit toujours en mouvement angle += angleSpeed; } } void mousePressed() { //créer un nouvelle ligne avec une taille aléatoire entre les nombres donné lineLength = random(100, 300); } void keyReleased() { //touche : delete ou retour arrière, permet de néttoyer, remettre le fond blanc, gommer if (key == DELETE || key == BACKSPACE) background(255); //sauvegarde l'image if (key == 's' || key == 'S') saveFrame(timestamp()+"_##.png"); // changer la direction de tracage, 180 = miroir if (key=='d' || key=='D') { angle = angle + 180; angleSpeed = angleSpeed * -1; } // couleur aléatoire avec la barre espace if (key == ' ') col = color(random(255), random(255), random(255), random(80, 150)); //default colors from 1 to 4 if (key == '1') col = color(102, 72, 104, 100); if (key == '2') col = color(206, 155, 65, 100); if (key == '3') col = color(129, 134, 149, 100); if (key == '4') col = color(224, 110, 110, 100); //// pdf export //// r pour démarrer l'enregistrement psf et e pour l'arrêter //if (key =='r' || key =='R') { // if (recordPDF == false) { // beginRecord(PDF, timestamp()+".pdf"); // println("recording started"); // recordPDF = true; // } //} else if (key == 'e' || key =='E') { // if (recordPDF) { // println("recording stopped"); // endRecord(); // recordPDF = false; // background(255); // } //} } void keyPressed() { //changer la longeur de la ligne ou l'angle if (keyCode == UP) lineLength += 5; if (keyCode == DOWN) lineLength -= 5; if (keyCode == LEFT) angleSpeed -= 0.5; if (keyCode == RIGHT) angleSpeed += 0.5; } // timestamp String timestamp() { Calendar now = Calendar.getInstance(); return String.format("%1$ty%1$tm%1$td_%1$tH%1$tM%1$tS", now); } {{:wiki:tutoriels:formes_aleatoire:170202_124620_9591.png|}} {{:wiki:tutoriels:formes_aleatoire:170202_124708_12430.png|}} {{:wiki:tutoriels:formes_aleatoire:170202_124830_1748.png|}}