Table des matières

autoKarol

Informations générales

Notre cher Karol devient un artiste numérique dans ses temps de loisir. Ce programme est une approximation automatisée de son travail.

Cahier des charges

Matériel

Outils

Réalisation

L'algorithme est simple : Il suffit de dessiner les bords gauche et droit des rectangles, puis colorer pixel par pixel en inversant la couleur quand un bord est trouvé.

Des fonctions supplémentaires permettent de redessiner en cliquant et de sauvegarder l'image en tapant retour.

autoKarol.pde
int total = 10;//Number of rectangles
 
color l= color(0); //These two should be different
color bg=color(255);
 
void setup()
{
  size(1920, 1200);
  noLoop();
}
 
void draw()
{
  //Clear previous drawing
  background(bg);
  stroke(l);
  //Select new shades
  color a = color(random(255), random(255), random(255)), 
  b = color(random(255), random(255), random(255));
  //Draw rectangles
  for (int i=0; i<total;++i)
  {
    //Random dimensions within bounds.
    float x = random(1, 5)*width/10, 
    y = random(1, 5)*height/10, 
    w = random(3, 4)*width/10, 
    h = random(3, 4)*height/10;
    //Left and right sides of rectangles
    line(x, y, x, y+h);
    line(x+w, y, x+w, y+h);
  }
  //Fill rectangles pixel by pixel
  for (int j=0;j<height;++j)
  {
    color current=a;
    for (int i=0;i<width;++i)
    {
      if (get (i, j)==l)//Flip color when line is encountered
        current = current==a? b : a;
      set(i, j, current);
    }
  }
}
void mousePressed()
{
  redraw();
}
void keyPressed()
{
  if (key==ENTER || key==RETURN) save("autoKarol.png");
}

Résultat