Toolbox Interactiondesign


Generative Gestaltung

Generative Gestaltung, Entwurf – Juliane Bergner

Polygone

Juliane Bergner, 31.08.2013 | Generative Gestaltung Goes Analog bei Prof. Dr. Christine Goutrié

Ich habe Muster und Grafiken entstehen lassen, die sich aus gleichseitigen Sechsecken aufbauen, wie sie zum Beispiel in Kristallstrukturen oder Bienenwaben auch in der Natur vorkommen. Auch zu meiner Grundidee – wie etwas Komplexes aus etwas Kleinem entsteht, was sich ständig wiederholt – haben mich natürliche Strukturen und der Aufbau von Zellen inspiriert.

Der besondere Reiz des Entwurfes liegt für mich darin, wie sich die ästhetische Wirkung der komplexen Strukturen vergrößert, da die Konturen der Grundformen vor dem Auge des Betrachters verschwimmen.

Polygone | Präsentation | SINNflut

Juliane Bergner, 12.07.2013 | Generative Gestaltung Goes Analog bei Prof. Dr. Christine Goutrié

Zur SINNflut gab es die analogen Endergebnisse als Ausstellung zu sehen und gleichzeitig konnten Besucher ein Stück Prozess miterleben, da wir den ganzen Abend über auch die Fräse arbeiten liesen.

Polygone | Prozess

Juliane Bergner, 31.08.2013 | Generative Gestaltung Goes Analog bei Prof. Dr. Christine Goutrié
Konzept

Werden Formen wiederholt, vervielfacht sich oft auch deren ästhetische Wirkung. Die so entstehenden Grafiken haben für den Betrachter einen großen Reiz, da sich die Konturen der ursprünglichen Formen vom Auge nur noch ungenau definieren lassen.

Mit Processing lassen sich regelmäßige Raster berechnen. Über eigene Funktionen habe ich zunächst polygone Formen aus Variablen erstellt. Indem ich die Variablen durch Werte ersetze, lassen sich die Polygone auf verschiedene Weise wiederholen und auf dem Bildschirm anordnen. Sie wachsen zu komplexen Grafiken, die sich immer wieder neu generieren lassen.

Meine Grundform für die entstandenen Muster ist ein gleichseitiges Sechseck. Vorbild dafür waren natürliche Strukturen, da sich diese auch oft aus gleichseitigen Sechsecken zusammensetzen, wie zum Beispiel Kristallstrukturen, Teile von Sternenbildern und Bienenwaben.

Die Grafiken enstehen zum einen für den Bildschirm aus sich überlagernden, halbtransparenten Flächen. Wandelt man diese in Linienmuster um, hat man zum anderen die Möglichkeit die Ergebnisse analog umzusetzen.

Durch G-Codes können die Daten von der Fräse in ein bestimmtes Material gebracht oder von einem Stift analog gezeichnet werden.

Polygone | Ausblick

Juliane Bergner, 31.08.2013 | Generative Gestaltung Goes Analog bei Prof. Dr. Christine Goutrié
Was wäre wenn..

.. ich heute noch einmal beginnen würde:

Ich würde von Beginn an gleich mehr wagen und nicht so viele Dinge erst einmal sicherheitshalber ausprobieren und in ein Testmaterial fräsen. Der Fräsvorgang an sich dauert einfach viel zu lange, um unnötige Dinge zu produzieren und am Ende dann festzustellen, dass oft die Zeit fehlt, um das zu tun, was man eigentlich als Endergebnis erhalten wollte.

.. ich noch 3 Monate Zeit bekäme:

Ich würde mein theoretisches Wissen im Umgang mit Processing und Programmierung im Allgemeinen vertiefen, damit ich Dinge, die ich darstellen will schneller und einfacher erreichen kann. Meine umständliche und komplizierte, auf Wissenslücken basierende Arbeitsweise, stand mir bei diesem Projekt mehrmals im Weg und hat mich bei der Umsetzung meiner Vorstellungen viel Zeit gekostet.

.. ich mit 100.000 Euro gefördert würde:

Ich würde unbedingt versuchen wollen richtig großflächig zu fräsen und meine Muster in Verbindung mit Produktdesign zu bringen. Zum Beispiel kann ich mir das Ganze gut in Tischplatten und individuell gestalteten Möbelfronten und Türen vorstellen. Zusätzlich zum Material Holz, sehe ich meine polygonen Muster auch in Glas – damit liesen sich moderne, zeitgeistgeprägte Glasfenster gestalten, die an repräsentativen oder öffentlichen Bauwerken eingesetzt werden können.

Polygone | Generative Gestaltung

Juliane Bergner, 31.08.2013 | Generative Gestaltung Goes Analog bei Prof. Dr. Christine Goutrié
PrintWriter output;

void setup() {
background(255);
stroke(0);
strokeWeight(1);
size(210, 210);
noLoop();
output = createWriter("polygonLine.ngc");
output.println("%");
output.println("G 54");
}

float hoehe=85;
float breite=hoehe+(hoehe/5);

void draw() {

drawPolygon(0, 0);
drawPolygon(0, 0-hoehe/2);
drawPolygon(0, 0+hoehe/2);
drawPolygon(0+breite*3/8, 0-hoehe/4);
drawPolygon(0+breite*3/8, 0+hoehe/4);
drawPolygon(0-breite*3/8, 0+hoehe/4);
drawPolygon(0-breite*3/8, 0-hoehe/4);

drawPolygonEindrittel(0-breite*5/12, 0-hoehe/2-hoehe*2/6);
drawPolygonEindrittel(0-breite/12, 0-hoehe/2-hoehe*2/6);
drawPolygonEindrittel(0+breite/12, 0-hoehe/2);
drawPolygonEindrittel(0-breite/12, 0-hoehe/6);
drawPolygonEindrittel(0-breite*5/12, 0-hoehe/6);
drawPolygonEindrittel(0-breite/2-breite/12, 0-hoehe/2);

drawPolygonEindrittel(0-breite/12, 0-hoehe/2);
drawPolygonEindrittel(0+breite/12, 0-hoehe/2-hoehe*2/6);
drawPolygonEindrittel(0+breite*5/12, 0-hoehe/2-hoehe*2/6);
drawPolygonEindrittel(0+breite/2+breite/12, 0-hoehe/2);
drawPolygonEindrittel(0+breite*5/12, 0-hoehe/6);
drawPolygonEindrittel(0+breite/12, 0-hoehe/6);

drawPolygonEindrittel(0+breite/6, 0);
drawPolygonEindrittel(0+breite*2/6, 0-hoehe*2/6);
drawPolygonEindrittel(0+breite/2+breite/6, 0-hoehe*2/6);
drawPolygonEindrittel(0+breite/2+breite*2/6, 0);
drawPolygonEindrittel(0+breite/2+breite/6, 0+hoehe*2/6);
drawPolygonEindrittel(0+breite*2/6, 0+hoehe*2/6);

drawPolygonEindrittel(0+breite/12, 0+hoehe/6);
drawPolygonEindrittel(0+breite*5/12, 0+hoehe/6);
drawPolygonEindrittel(0+breite/2+breite/12, 0+hoehe/2);
drawPolygonEindrittel(0+breite*5/12, 0+hoehe/2+hoehe*2/6);
drawPolygonEindrittel(0+breite/12, 0+hoehe/2+hoehe*2/6);
drawPolygonEindrittel(0-breite/12, 0+hoehe/2);

drawPolygonEindrittel(0-breite*5/12, 0+hoehe/6);
drawPolygonEindrittel(0-breite/12, 0+hoehe/6);
drawPolygonEindrittel(0+breite/12, 0+hoehe/2);
drawPolygonEindrittel(0-breite/12, 0+hoehe/2+hoehe*2/6);
drawPolygonEindrittel(0-breite*5/12, 0+hoehe/2+hoehe*2/6);
drawPolygonEindrittel(0-breite/2-breite/12, 0+hoehe/2);

drawPolygonEindrittel(0-breite/2-breite/6, 0-hoehe*2/6);
drawPolygonEindrittel(0-breite*2/6, 0-hoehe*2/6);
drawPolygonEindrittel(0-breite/6, 0);
drawPolygonEindrittel(0-breite*2/6, 0+hoehe*2/6);
drawPolygonEindrittel(0-breite/2-breite/6, 0+hoehe*2/6);
drawPolygonEindrittel(0-breite/2-breite*2/6, 0);
}


void drawPolygon(float x, float y) {
noFill();
beginShape();
vertex(x+width/2-breite/4, y+height/2-hoehe/2);
output.println("G0 X"+(x+width/2-breite/4)+" Y"+(y+height/2-hoehe/2));
output.println("G1 Z"+(-1)+"F300");

vertex(x+width/2+breite/4, y+height/2-hoehe/2);
output.println("G1 X"+(x+width/2+breite/4)+" Y"+(y+height/2-hoehe/2));

vertex(x+width/2+breite/2, y+height/2);
output.println("G1 X"+(x+width/2+breite/2)+" Y"+(y+height/2));

vertex(x+width/2+breite/4, y+height/2+hoehe/2);
output.println("G1 X"+(x+width/2+breite/4)+" Y"+(y+height/2+hoehe/2));

vertex(x+width/2-breite/4, y+height/2+hoehe/2);
output.println("G1 X"+(x+width/2-breite/4)+" Y"+(y+height/2+hoehe/2));

vertex(x+width/2-breite/2, y+height/2);
output.println("G1 X"+(x+width/2-breite/2)+" Y"+(y+height/2));
output.println("G1 X"+(x+width/2-breite/4)+" Y"+(y+height/2-hoehe/2));
output.println("G0 Z1.5");


endShape(CLOSE);

line(x+width/2-breite/2, y+height/2, x+width/2+breite/2, y+height/2);
output.println("G0 X"+(x+width/2-breite/2)+" Y"+(y+height/2));
output.println("G1 Z"+(-1)+"F300");
output.println("G1 X"+(x+width/2+breite/2)+" Y"+(y+height/2));
output.println("G0 Z1.5");

line(x+width/2-breite/4, y+height/2-hoehe/2, x+width/2+breite/4, y+height/2+hoehe/2);
output.println("G0 X"+(x+width/2-breite/4)+" Y"+(y+height/2-hoehe/2));
output.println("G1 Z"+(-1)+"F300");
output.println("G1 X"+(x+width/2+breite/4)+" Y"+(y+height/2+hoehe/2));
output.println("G0 Z1.5");

line(x+width/2+breite/4, y+height/2-hoehe/2, x+width/2-breite/4, y+height/2+hoehe/2);
output.println("G0 X"+(x+width/2+breite/4)+" Y"+(y+height/2-hoehe/2));
output.println("G1 Z"+(-1)+"F300");
output.println("G1 X"+(x+width/2-breite/4)+" Y"+(y+height/2+hoehe/2));
output.println("G0 Z1.5");
}


void drawPolygonZweidrittel(float x, float y) {
noFill();
beginShape();
vertex(x+width/2-breite/6, y+height/2-hoehe*2/6);
output.println("G0 X"+(x+width/2-breite/6)+" Y"+(y+height/2-hoehe*2/6));
output.println("G1 Z"+(-1)+"F300");

vertex(x+width/2+breite/6, y+height/2-hoehe*2/6);
output.println("G1 X"+(x+width/2+breite/6)+" Y"+(y+height/2-hoehe*2/6));

vertex(x+width/2+breite*2/6, y+height/2);
output.println("G1 X"+(x+width/2+breite*2/6)+" Y"+(y+height/2));

vertex(x+width/2+breite/6, y+height/2+hoehe*2/6);
output.println("G1 X"+(x+width/2+breite/6)+" Y"+(y+height/2+hoehe*2/6));

vertex(x+width/2-breite/6, y+height/2+hoehe*2/6);
output.println("G1 X"+(x+width/2-breite/6)+" Y"+(y+height/2+hoehe*2/6));

vertex(x+width/2-breite*2/6, y+height/2);
output.println("G1 X"+(x+width/2-breite*2/6)+" Y"+(y+height/2));
output.println("G1 X"+(x+width/2-breite/6)+" Y"+(y+height/2-hoehe*2/6));
output.println("G0 Z1.5");


endShape(CLOSE);

line(x+width/2-breite/6, y+height/2-hoehe*2/6, x+width/2+breite/6, y+height/2+hoehe*2/6);
output.println("G0 X"+(x+width/2-breite/6)+" Y"+(y+height/2-hoehe*2/6));
output.println("G1 Z"+(-1)+"F300");
output.println("G1 X"+(x+width/2+breite/6)+" Y"+(y+height/2+hoehe*2/6));
output.println("G0 Z1.5");

line(x+width/2+breite/6, y+height/2-hoehe*2/6, x+width/2-breite/6, y+height/2+hoehe*2/6);
output.println("G0 X"+(x+width/2+breite/6)+" Y"+(y+height/2-hoehe*2/6));
output.println("G1 Z"+(-1)+"F300");
output.println("G1 X"+(x+width/2-breite/6)+" Y"+(y+height/2+hoehe*2/6));
output.println("G0 Z1.5");

line(x+width/2+breite*2/6, y+height/2, x+width/2-breite*2/6, y+height/2);
output.println("G0 X"+(x+width/2+breite*2/6)+" Y"+(y+height/2));
output.println("G1 Z"+(-1)+"F300");
output.println("G1 X"+(x+width/2-breite*2/6)+" Y"+(y+height/2));
output.println("G0 Z1.5");
}


void drawPolygonEindrittel(float x, float y) {
noFill();
beginShape();
vertex(x+width/2-breite/12, y+height/2-hoehe/6);
output.println("G0 X"+(x+width/2-breite/12)+" Y"+(y+height/2-hoehe/6));
output.println("G1 Z"+(-1)+"F300");

vertex(x+width/2+breite/12, y+height/2-hoehe/6);
output.println("G1 X"+(x+width/2+breite/12)+" Y"+(y+height/2-hoehe/6));

vertex(x+width/2+breite/6, y+height/2);
output.println("G1 X"+(x+width/2+breite/6)+" Y"+(y+height/2));

vertex(x+width/2+breite/12, y+height/2+hoehe/6);
output.println("G1 X"+(x+width/2+breite/12)+" Y"+(y+height/2+hoehe/6));

vertex(x+width/2-breite/12, y+height/2+hoehe/6);
output.println("G1 X"+(x+width/2-breite/12)+" Y"+(y+height/2+hoehe/6));

vertex(x+width/2-breite/6, y+height/2);
output.println("G1 X"+(x+width/2-breite/6)+" Y"+(y+height/2));
output.println("G0 X"+(x+width/2-breite/12)+" Y"+(y+height/2-hoehe/6));
output.println("G0 Z1.5");


endShape(CLOSE);

line(x+width/2-breite/12, y+height/2-hoehe/6, x+width/2-breite/12, y+height/2+hoehe/6);
output.println("G0 X"+(x+width/2-breite/12)+" Y"+(y+height/2-hoehe/6));
output.println("G1 Z"+(-1)+"F300");
output.println("G1 X"+(x+width/2-breite/12)+" Y"+(y+height/2+hoehe/6));
output.println("G0 Z1.5");

line(x+width/2+breite/12, y+height/2-hoehe/6, x+width/2+breite/12, y+height/2+hoehe/6);
output.println("G0 X"+(x+width/2+breite/12)+" Y"+(y+height/2-hoehe/6));
output.println("G1 Z"+(-1)+"F300");
output.println("G1 X"+(x+width/2+breite/12)+" Y"+(y+height/2+hoehe/6));
output.println("G0 Z1.5");
}


void mousePressed() {
saveFrame("polygonLine.png");
output.println("M 02");
output.println("%");
output.flush();
output.close();
exit();
}
03.09.2013 | Juliane Bergner |