Dessin inspiré par le tableau de Sol Lewitt, Untitled 2001.
/* Dessin inspiré par le tableau de Sol Lewitt, Untitled 2001
* http://www.artlex.com/ArtLex/kl/images/linocut_lewit.lg.jpg
*
* Lou Feraud, Cassandre Poirier, Douglas Edric Stanley
* (cc) 2009 Creative Commons BY-SA 2.0 Some Rights Reserved
*/
// créer une liste des couleurs qui seront utilisées dans le dessin
int[] couleurs={
240,0,55,130,20,200};
// utilisé pour ne pas répéter deux fois la même couleur
int derniereCouleur=-1;
// taille du sketch
size(500,500);
// commencer au milieu
translate(250,250);
// couleur de fond
background(245);
// effet soyeux
smooth();
// utiliser le mode teinte/saturation/luminosité
// http://fr.wikipedia.org/wiki/Teinte_saturation_lumi%C3%A8re
colorMode(HSB,360,100,100);
// pas de traits
noStroke();
// une variable qui sera utilisée pour décaler chaque tranche d'un angle aléatoire
float decalage=20.0;
// la longeur des tranches
float rayon=200.0;
// une boucle pour créer toutes les tranches en rond
for(float a=0.0; a<360.0; a+=decalage){
// un tout petit peu de bordel pour les longeurs des tranches (cf. Lewitt)
rayon=random(200,220);
// choisir un nouveau angle de décalage
decalage=int(random(3,20));
// se décaler pour la première moitié de ce décalage
rotate(radians(decalage/2));
// calculer les côtés du triangle en fonction de l'angle et du rayon
float x = cos(radians(decalage/2))*rayon;
float y = sin(radians(decalage/2))*rayon;
// choisir une nouvelle couleur qui ne sera jamais pareille que la dernière couleur utilisée
int quelleCouleur=derniereCouleur;
while(quelleCouleur==derniereCouleur){ // boucler tant que la nouvelle couleur est identique à la dernière
quelleCouleur= int(random(couleurs.length)); // choisir une nouvelle valeur
}
derniereCouleur=quelleCouleur; // se souvenir de cette couleur pour la prochaine tranche
int cetteCouleur=couleurs[quelleCouleur]; // extraire de la liste des couleur, la teinte
// utiliser (enfin) la couleur
fill(cetteCouleur,100,85);
// commencer une forme (un triangle)
beginShape();
vertex(0,0);
vertex(x,-y);
vertex(x,y);
endShape(CLOSE);
// se décaler pour la deuxième moitié de ce décalage
rotate(radians(decalage/2));
}