v3ga / Workshop_P5Geneva_2019

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Axidraw v3

Processing Geneva 2019

Samedi 23 novembre à la HEAD, Genève

Un événement du Master Media Design de la HEAD en collaboration avec le Studio Z1

https://www.facebook.com/events/2395921930670293/

Processing Geneva 2019 est un événement consacré à la découverte, la célébration et l'apprentissage de la programmation dans un but créatif et artistique. Cet événement s'adresse à la fois aux débutant·e·s n'ayant jamais touché à une ligne de code mais également aux initié·e·s ayant déjà de l'expérience en programmation. Les ateliers seront donnés par Julien Gachadoat et Laurent Novac. Des minis conférences seront également données par les intervenants et alumni·e·s Media Design !

Outil

Gifi

Documentation

Cet outil permet de travailler avec une grille dont les motifs sont dessinés par programme pour chaque cellule. Deux modes de rendu sont implémentés :

  • un rendu direct qui permet d’utiliser les commandes classiques de dessin processing (line, ellipse, rect, ...)
  • un rendu "indirect" basé sur la création de polygones. Ce mode offre des avantages de possibilités de rendu (déformation , hachures) mais un peu plus "difficile" à programmer.
boolean bModeDirect = false; // active ou non le mode direct

Dans son architecture, l’outil est composé de trois blocs principaux représentés par les classes décrites ci-dessous.

GridCellRender

Cette classe expose des méthodes pour dessiner les cellules de la grille, dans les deux modes de l’outil. C’est principalement dans cette classe que nous allons travailler en implémentant les méthodes de dessin. Nous pourrons aussi créer une interface graphique propice à l’expérimentation et à l’exploration combinatoire des paramètres.

En mode direct

C'est la méthode drawDirect() de la classe qui est appelé avec en paramètre :

  • Rect rect // coordonnées de la cellule dans la grille
  • int i, int j // indices de la cellule (horizontal & vertical)
class GridCellRenderTemplate extends GridCellRender 
{
  GridCellRenderTemplate()
  {
    super("Template");
  }

  // ----------------------------------------------------------
  void drawDirect(Rect rect, int i, int j)
  {
    pushMatrix();
    translate(rect.x, rect.y);

    line(0, 0, rect.width, rect.height);
    line(0, rect.height, rect.width, 0);
    
    popMatrix();
  }
}
En mode indirect

En mode indirect, c'est la méthode compute() qui est appelé pour fabriquer des instances de Polygon2D à ajouter à la liste listPolygons de l'instance. Cette méthode prend deux paramètres :

  • Rect rect // coordonnées de la cellule non déformée dans la grille
  • Polygon2D quad // coordonnées de la cellule déformée dans la grille

Exemple dans la classe GridCellRenderQuad

// ----------------------------------------------------------
void compute(Rect rect, Polygon2D quad)
{
  // Copy the quad
  Polygon2D quadCopy = quad.copy(); 
  // Apply scale
  quadCopy.scaleSize(this.scalex, this.scaley);
  // Add to polygons list
  listPolygons.add( quadCopy );
  
  // Stripes ? 
  if (grid.bComputeStripes)
    computeStripes(quadCopy, grid.stripesAngleStrategy, grid.getFieldValue( quadCopy.getCentroid() ) );
}

GridField

Cette classe permet de fournir une valeur comprise entre 0 et 1 pour être utilisée pour moduler des variables de rendu de grille (espacement et angle de rotation de hachures, mise à l’échelle de motif, etc...) Voir par exemple la classe GridCellRenderEllipse qui utilise cette valeur pour moduler l’espacement des hachures, ainsi que leur orientation.

Grid

Cette classe permet de gérer les caractéristiques principales de la grille (résolutions, dimensions, déformations) Elle maintient une liste d'instances de GridCellRender et de GridField.

Outils

Liens

Photos

Axidraw Axidraw Axidraw Axidraw

About


Languages

Language:Processing 100.0%