phiaq – Asemic


I created generative chairs that are randomized in line vertices, and created a language of chairs to describe the different designs it could be based on it’s structure. At first thought of a chair language to describe a normal chair, and then it evolved into describing the different ways chairs could be constructed. When designing furniture and objects, there is always a normal set of elements that needs to be constructed. For a chair there needs to be 1) a seat 2) a place to lean your back 3) legs to hold it up. After the initial structure, furniture can be embellished to create interesting forms.


Firstly, I drew a normal chair with lines . Then, I randomized the vertices to create the messy chair language.

I then created a grid with it so it looks like hieroglyphics or language. The plotting went smoothly and I did it with a light blue paper and a blue pen.

Axis Draw


For the next iteration, I want to use this language more elaborately by having it describing a chair in a diagram (kind of like the first sketch I drew) or having it in a format where it’s more purposeful in an informative design for furniture. I also should clean up my code because it’s very hard to read.


import processing.pdf.*;
boolean bRecordingPDF;
int pdfOutputCount = 0; 
void setup() {
  size(500, 500);
  bRecordingPDF = true;
void keyPressed() {
  // When you press a key, it will initiate a PDF export
  bRecordingPDF = true;
void draw() {
  if (bRecordingPDF) {
    background(255); // this should come BEFORE beginRecord()
    beginRecord(PDF, "myName_" + pdfOutputCount + ".pdf");
    // This draws a squiggly drunk walk.
    float x1 = 38;
    float w = 12;
    float y1 = 10;
    float w2 = w/2;
    float adj = w*sin(45);
    float adj2 = w*sin(45);//left diag
    float off = w/10;
    float lenChair = y1+w+w2+adj+off;
    for (int j=0;j<12;j++) {
      for (int f=0;f<12;f++) {
        float aL = random(x1+(j*x1)-10,x1+(j*x1)+10);
        float bL = random(x1+(j*x1)-10,x1+(j*x1)+10); 
        float aR = random(x1+w+(j*x1)-10,x1+w+(j*x1)+10);
        float d = random(x1+w2+adj+(j*x1)-5,x1+w2+adj+(j*x1)+5);
        float e = random(y1+lenChair*f-10,y1+lenChair*f+10);
        float g = random(x1+w2+adj+(j*x1)-10,x1+w2+adj+(j*x1)+10);
        float h = random(y1+w2+adj+lenChair*f-10,y1+w2+adj+lenChair*f+10);
        float i = random(y1+w+w2+adj2+off+lenChair*f-10,y1+w+w2+adj2+off+lenChair*f+off);
        float k = random(x1+w+(j*x1)-10,x1+w+(j*x1)+10);
        float l = random(y1+w+lenChair*f-10,y1+w+lenChair*f+10);
        float m = random(y1+w+w2+adj+off+lenChair*f-6,y1+w+w2+adj+off+lenChair*f+6);
        line(aL,e,bL,l); //left top chair
        line(aL-off,e,bL-off,l); //left top chair leftest offset
        line(bL,l,k,y1+w+lenChair*f);//bottom connecting line
        line(aL,e,aR,y1+lenChair*f);//top connecting line
        line(aR,y1+lenChair*f,k,y1+w+lenChair*f);//right top chair
        line(aR+off,y1+lenChair*f,k+off,y1+w+lenChair*f);//right top chair rightest offset
        line(k,y1+w+lenChair*f,d,h+off);//right diag down line
        line(bL-off,l,x1-adj2+w2+(j*x1),y1+w2+adj2+lenChair*f);//left diag down line
        line(x1-adj2+w2+(j*x1),y1+w2+adj2+lenChair*f,d,h);//bottom seat line
        line(x1-adj2+w2+(j*x1),y1+w2+adj2+off+lenChair*f,d,h+off);//bottomest seat line off
        line(x1-adj2+w2+(j*x1),y1+w2+adj2+off+lenChair*f,x1-adj2+w2+(j*x1),i);//leftest bottom leg
        line(x1-adj2+w2+off+(j*x1),y1+w2+adj2+off+lenChair*f,x1-adj2+w2+off+(j*x1),i);//left bottom leg
        line(d,h+off,g,m);//right bottom leg
        line(d-off,h+off,g-off,m); //rightest bottom offset
        line(bL-off,l,bL-off,y1+w2+adj2+(w/2)+lenChair*f);//left small back leg
        line(k,y1+w+lenChair*f,k,y1+w2+adj+(w/2)+lenChair*f);//right small back leg
        line(x1,y1,x1,y1+w); //left top chair
        line(x1-off,y1,x1-off,y1+w); //left top chair leftest offset
        line(x1,y1+w,x1+w,y1+w);//bottom connecting line
        line(x1,w/2,x1+w,w/2);//top connecting line
        line(x1+w,y1,x1+w,y1+w);//right top chair
        line(x1+w+off,y1,x1+w+off,y1+w);//right top chair rightest offset
        line(x1+w,y1+w,x1+w2+adj,y1+w2+adj);//right diag down line
        line(x1,y1+w,x1-adj2+w2,y1+w2+adj2);//left diag down line
        line(x1-adj2+w2,y1+w2+adj2,x1+w2+adj,y1+w2+adj);//bottom seat line
        line(x1-adj2+w2,y1+w2+adj2+off,x1+w2+adj,y1+w2+adj+off);//bottomest seat line off
        line(x1-adj2+w2,y1+w2+adj2+off,x1-adj2+w2,y1+w+w2+adj2+off);//leftest bottom leg
        line(x1+w2+adj,y1+w2+adj+off,x1+w2+adj,y1+w+w2+adj+off);//right bottom leg
        line(x1,y1+w2+adj2+off,x1,y1+w2+adj2+(w/2));//left small back leg
        line(x1+w,y1+w2+adj+off,x1+w,y1+w2+adj+(w/2));//right small back leg
    bRecordingPDF = false;