Category: Scripting
Suggestive, not literal architectural drawings
We’ve been discussing a lot the idea of how to represent your second project so that they have an architectural language (but perhaps not literal sections in a building with floor slabs and people). Here are two references we were showing around, so you have the links. Happy section making!
Taming the Erratic, Daniel Norell + Einar Rodhe
The Next Port of Call, Bair and Balliet, 15th architecture biennale, Venice 2016
http://bairballiet.com/THE-NEXT-PORT-OF-CALL-2016
The Mereological City
Might be useful for those who are looking at urbanism.
http://www.lab-eds.org/
In addition, there is a book writted by Daniel Kohler, The Mereological City A reading of the works of Ludwig Hilberseimer.
Testing different styles of Supershape
Interactive supershape
http://www.superformula.org
Triangular and hexagonal cellular automata.
Just some examples of triangular and hexagonal cellular automata created with the Processing code below:
http://automatic.se/programming/wp-content/uploads/2017/11/CATriangularAllRules.zip
http://automatic.se/programming/wp-content/uploads/2017/11/CAHexagonal.zip
Digital Grotesque
For anyone interested in the techniques behind the Digital Grotesque project and others by Michael Hansmeyer / Benjamin Dillenburger, check out these course pages from ETH Zürich with Processing scripts:
http://www.caad.arch.ethz.ch/blog/high-resolution-2-materialise/
http://www.caad.arch.ethz.ch/blog/high-resolution-architecture-sacred-spaces/
More of the theory behind it is described in the article “Mesh Grammars –
Procedural Articulation of Form”:
https://cumincad.architexturez.net/system/files/pdf/caadria2013_259.content.pdf
Processing Class Balls
Script for very simplistic bouncing mechanics & using classes
int number = 20;
int a = number-1;
int i;
Ball[] balls;
int rad=20;
void setup()
{
background (255);
size(500, 500);
noStroke();
fill(0);
balls = new Ball [number];
for (i = 0; i < number; i++)
{
balls[i] = new Ball(random(0, height), random(0, width), rad, rad, random(-2, 2), random(-2, 2), i, balls );
}
}
void draw()
{
background (0);
for (Ball bal : balls) {
bal.update();
bal.bounce();
bal.display();
}
}
class Ball
{
float b;
float c;
int sizex;
int sizey;
float incrementx;
float incrementy;
int id;
Ball[] others;
Ball(float btemp, float ctemp, int sizextemp, int sizeytemp, float incrementxtemp, float incrementytemp, int idtemp, Ball[] otherstemp)
{
b=btemp;
c=ctemp;
sizex=sizextemp;
sizey=sizeytemp;
incrementx=incrementxtemp;
incrementy=incrementytemp;
id=idtemp;
others=otherstemp;
}
void update()
{
if (b > width || b < 0)
{
incrementx=-incrementx;
}
if (c > height || c < 0)
{
incrementy=-incrementy;
}
b += incrementx; //add incrementX to posX
c += incrementy; //posY
}
void display()
{
fill(255);
ellipse(b, c, rad, rad);
}
void bounce()
{
int j;
for (j=id; j<number; j++)
{
float db= others[j].b – b;
float dc= others[j].c – c;
float distance = sqrt(db*db + dc*dc);
float minDist = others[j].sizex/2 + sizex/2;
if (distance < minDist)
{
incrementx =- incrementx;
others[j].incrementx =- others[j].incrementx;
incrementy =- incrementy;
others[j].incrementy =- others[j].incrementy;
b += incrementx;
others[j].b += others[j].incrementx;
c += incrementy;
others[j].c += others[j].incrementy;
}
}
}
}
Stephen Wolfram: A New Kind of Science
https://www.wolframscience.com/nks/