Créer des formes aléatoires et géométriques avec le logiciel processing
KARMA
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);
}