Outils pour utilisateurs

Outils du site


wiki:projets:autokarol

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

  • Produire un résultat esthétiquement similaire aux œuvres de Karol en un temps négligeable.

Matériel

  • Ordinateur

Outils

  • Processing

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

wiki/projets/autokarol.txt · Dernière modification: 2016/09/11 12:59 (modification externe)