Nicolas Anderson

48
1 rules and numbers define the world around us both natural and manmade 2 design systems based on rules and experiment with the outcome rather than design a static single solution. 3 populate these systems with data from various sources a user needs | parametric office | small scale b site and environmental criteria | parasitic office addition | medium scale c randomly selected variables | algorithmic high-rises | large scale

description

Nicolas Anderson is a licensed Architect in the State of Illinois. He received his Bachelor of Architecture degree from the Illinois Institute of Technology and his Masters in Architecture from Harvard Graduate School of Design receiving the Digital Design Prize upon graduation. He is an Associate Principal with Murphy/Jahn and also the Creative Director of Latent Design (http://www.latentdesign.net/).

Transcript of Nicolas Anderson

Page 1: Nicolas Anderson

1rules and numbers define the world around us both natural and manmade

2design systems based on rules and experiment with the outcome rather than design a static single solution.

3 populate these systems with data from various sources

a user needs | parametric office | small scale

b site and environmental criteria | parasitic office addition | medium scale

c randomly selected variables | algorithmic high-rises | large scale

Page 2: Nicolas Anderson

rethinking the office cubicalparametrically defined modules

the project was conceptualized as an exploration of the capabilities of catia as not only a design development tool but as a methodology of design. the goal was to create a single robust model with a high level of flexibility built into it. the delivery strategy would be to build interactive website where an office manager could input relationship data which would relate to the level of interaction each member of a team would need within a work setting. these relationships would then be translated into simple angular and length values which would drive the geometry of the requested workstation module. using one model and a design table (an excel spreadsheet containing sets of values which parametrically update instances of the model) the objective was to allow for wide variety of configurations for each set of these relationships. the lighting system for the office would embody a parametric relationship to the configuration of the workstations thus creating a visual register at the ceiling plane of the working relationships of the office. by combining multiple team workstations with differing relationships into an interlocking system, a language would begin to emerge describing the office environment.

Page 3: Nicolas Anderson

definitionwhat should be parametric?

Page 4: Nicolas Anderson

sketchesset out initial geometries for the components

Page 5: Nicolas Anderson

relationshipsgeometric dimensions can be driven in relation to other pieces

Page 6: Nicolas Anderson

similaritiesthe lights were built with similar characteristics to the tables

Page 7: Nicolas Anderson

tablesmodifying table values rebuilds a new model

Page 8: Nicolas Anderson

familiesbuilt from the same logical framework

Page 9: Nicolas Anderson

ceiling planeinterlocking lighting modules reflects team relationships below

Page 10: Nicolas Anderson
Page 11: Nicolas Anderson
Page 12: Nicolas Anderson

com

pu

ter

ho

usi

ng

sup

po

rt a

rm

wo

rk s

urf

ace

cen

tral

su

pp

ort

ligh

t

leg

wo

rk s

urf

ace

vari

able

par

titi

on

po

wer

/ in

tern

et

ligh

t

bottom view

top view

Page 13: Nicolas Anderson

parasitic buildingalgorithmic architecture

the purpose of the algorithmic architecture course was to develop algorithms and computational methods that would encapsulate the processes that lead to the generation of meaningful architectural form. for this final project we were to develop an internal revenue service building that would act as a parasite to the host building (a turn of the century brick warehouse) in downtown boston. using maya embedded language (mel), the assignment asked to write code using techniques explored in the class which would create geometry for an architectural solution.

Page 14: Nicolas Anderson

1 - parasitism is described as a relationship in which a parasite temporarily or permanently exploits the energy of a host.(space, structure, street exposure, sunlight)

2 - parasites live on the outer surface of a host or inside its body in respiratory organs, digestive organs, venous systems, as well as other organs and tissues. (mutated skin layers)

3 - frequently a host provides a parasite not only with food, but also with enzymes and oxygen, and offers favorable temperature conditions.

4 - but a host is certainly not inactive against a parasite, and it hinders the development and population growth of parasites with different defense echanisms, such as the cleaning of skin, peristaltic contraction of the digestive aparatus, and the development of antibodies.(random erosion of parasitic surfaces)

5 - parasites respond to this defense by anchoring themselves with hooks and suckers onto skin, or digestive mucous membrane, and by developing protective devices and substances which lessen defensive capabilities of their host. (floor plates)

6 - there is “tension” between a host and its parasite, since the host endeavours to get rid of the foreign body, while the parasite employs new ways to maintain the connection with the host.(erosion of host)

Cuscuta

Strangler Tree

parasitic buildingalgorithmic architecture

Page 15: Nicolas Anderson

the initial investigation defined a set of assets that the host building embodied that a parasite would desire to exploit. given the existing site, building code and height limitations, these assets were defined as the existing structure, space to grow, street exposure from the heavily traveled intersection, and access to natural light from the southern and eastern facades. the algorithm begins by rationalizing the host building into a regular ten foot module corresponding to the floor to floor height. the parasite begins by cloning the host building and then reading its available space to grow. each face of the parasite is then repositioned out to the corresponding available value minus a random value. once the parasite has grown, a morphing algorithm creates a series of morphed iterations between the host and parasite. these children form the layers of new offices. floor plates are created at every other existing floor of the host building reaching outwards to the new skin thus anchoring the parasite to its host. at this point the host building fights back by a code that selects a certain number of random faces of the host, parasite, and children and deletes them. since this action not only reconnects the host to these assets exploited by the parasite, but also provides a mutually shared addition of floor space the end result is more of a symbiotic association for the host and parasite rather than strictly a parasitic relationship.

Page 16: Nicolas Anderson

1 - defining the site boundariesthe parasitic IRS building attachesto the host on the available eastand south sides as well as on the roof to the allowable limits of the building code. in doing so the parasite creates an envelope which blocks the host’s accessto sunlight and visibility from the major intersection at the corner of Lincoln street and Essex street.

2 - measuring available spacein order for the algorithm tobe able to read the available space which it has to grow, a code must be written that calculates each measuring line and returns a value which can be used later in the code.

Page 17: Nicolas Anderson

3 - subdividing the surfacethe parasite initializes itself by cloning the host building and subdividing its surface into a 10ft module which corresponds to the existing host. The faces of this subdivision will then grow outwards reading data from the measuring lines and then subtracting a random value for each face. this random variable can be modified for a variety of resulting geometries.

4 - filling the sitethe faces of the subdivided parasite geometry finally grow outward as indicated by the diagram below. Once all of the faces of the parasite on the east, south and roof of the parasite have been relocated to mature development, then a morphing operation is performed in the code which creates shell layers children) which subdivide the enclosed volume into office layers. floor plates are created at every other existing floor of the host building reaching outwards to the new skin thus anchoring the parasite to its host.

Page 18: Nicolas Anderson
Page 19: Nicolas Anderson
Page 20: Nicolas Anderson
Page 21: Nicolas Anderson
Page 22: Nicolas Anderson
Page 23: Nicolas Anderson
Page 24: Nicolas Anderson
Page 25: Nicolas Anderson
Page 26: Nicolas Anderson
Page 27: Nicolas Anderson
Page 28: Nicolas Anderson
Page 29: Nicolas Anderson
Page 30: Nicolas Anderson

high-riseform finding experiment

Page 31: Nicolas Anderson

The starting point for this exercise was the diagonally braced tubular structure for a high rise scheme that i began working on as an undergraduate at IIT. I was interested in developing a robust code which would allow for many of the parameters of the original scheme to be variable within a certain range of limitations in order to automate the manual method of traditional design in a digital environment. During the scripting process, I began to investigate the possibilities of a marriage between two slightly shifted structures. The most suggestive moment of the project occurred when I decided to see what forms the computer would arrive at if I allowed it to randomly select the variables within a confined range which I established. The result was that a series of families began to emerge, leading one to question role of the designer in this new field of exploration.

Page 32: Nicolas Anderson

//Global Proc to set Colors!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

global proc setColor(string $object, string $type, float $red, float $green, float $blue, float $transparency){

$color = eval("createRenderNodeCB -asShader \"surfaceShader\" " + $type +"\"\"");

//set the coloreval("setAttr " + $color + ".color -type double3 "+ $red + " " + $green + "

" + $blue);//set the transparencyeval("setAttr " + $color + ".transparency -type double3 "+ $transparency

+ " " + $transparency + " " + $transparency);//assign the coloreval("sets -e -forceElement " + $color + "SG "+ $object);

};

Page 33: Nicolas Anderson

//Spiral Buidling !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//Values !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

int $numFloors = 50; // Number of Floorsint $numSides = rand(3,24); // Number of Sides Per Floor int $rotAngle = rand(1,30); // Angle of Rotationint $scaleShift = rand(1,3); // Shifting Phase of Sin or Cosint $floorMf = rand(25,30); // Scale Multiplication Factorint $moveZ = 10; // Floor to Floor Height float $colRad = .5; // Column Radiusfloat $colRad2 = .35; // Tertiary Column Radiusfloat $platThick = .5; // Thickness of Floor Platefloat $xscale = rand(20,30); // Disproportionate Scaling Value

//Print Values !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

print ("int $numFloors = " + $numFloors + ";" + "\n");print ("int $numSides = " + $numSides + ";" + "\n");print ("int $rotAngle = " + $rotAngle + ";" + "\n");print ("int $scaleShift = " + $scaleShift + ";" + "\n");print ("int $floorMf = " + $floorMf + ";" + "\n");print ("int $moveZ = " + $moveZ + ";" + "\n");print ("float $colRad = " + $colRad + ";" + "\n");print ("float $colRad2 = " + $colRad2 + ";" + "\n");print ("float $platThick = " + $platThick + ";" + "\n");print ("float $xscale = " + $xscale + ";" + "\n");

Page 34: Nicolas Anderson

string $towName = "A"; //Sets Counter

for ($numTow=2; $numTow<4; $numTow++){

//Create and Group 1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string $g1 = "";for($i=1; $i<$numFloors; $i++){

$name = ("floor" + $i + $towName);circle -c 0 0 0 -nr 0 0 1 -sw 360 -r 1 -d 1 -s $numSides -name $name;

float $scale = $floorMf * (sin(deg_to_rad($i*$scaleShift*$numTow)));if ($scale <= 0) {

$scale = $scale - 10;}

else {$scale = $scale + 20;

}

move ($scale/3) 0 ($moveZ * ($i-1));rotate 0 0 ($i*$rotAngle);scale -ocp $xscale $scale $scale;

$g1 = $g1 + " floor" + $i + $towName;print ($scale + " ");}string $floorGroup = "FloorGroup" + $towName;eval("group -name " + $floorGroup + $g1);select $floorGroup;string $loftName = "LoftOne" + $towName;loft -ch 1 -u 1 -c 0 -ar 1 -d 1 -ss 2 -rn 0 -po 0 -rsn true -name $loftName;setColor($loftName, "blinn", (rand(1.)), (rand(1.)), (rand(1.)),.5);

Page 35: Nicolas Anderson

//Create and Group Reverse!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string $g1R = "";for($i=1; $i<$numFloors; $i++){

$name = ("floorR" + $i + $towName);circle -c 0 0 0 -nr 0 0 1 -sw 360 -r 1 -d 1 -s $numSides -name $name;

float $scale = $floorMf * (sin(deg_to_rad($i*$scaleShift*$numTow)));if ($scale <= 0) {

$scale = $scale - 10;}

else {$scale = $scale + 20;

}

move ($scale/3) 0 ($moveZ * ($i-1));rotate 0 0 ($i*(-$rotAngle));scale -ocp $scale $xscale $scale;

$g1R = $g1R + " floorR" + $i + $towName;print ($scale + " ");}string $floorGroupR = "FloorGroupR" + $towName;eval("group -name " + $floorGroupR + $g1R);select $floorGroupR;string $loftName = "LoftOneR" + $towName;loft -ch 1 -u 1 -c 0 -ar 1 -d 1 -ss 2 -rn 0 -po 0 -rsn true -name $loftName;hide;select -cl;

Page 36: Nicolas Anderson

//######################################################################//Create Columns One !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//Create Columns One !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string $gC1 = "";for($i=0; $i<$numSides; $i++){string $column = "column" + $i + $towName;curve -d 1 -p 0 0 0 -name $column;

for($j=1; $j<$numFloors; $j++){

string $x = "pointPosition " + "floor" + $j + $towName + ".cv[" + $i + "]";

float $p[] = eval($x);curve -a -p ($p[0]) ($p[1]) ($p[2]) $column;

}$gC1 = $gC1 + " column" + $i + $towName;}string $columnName = "ColumnGroup" + $towName;eval("group -name " + $columnName + $gC1);

//Delete Columns One !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

for($i=0; $i<$numSides; $i++){string $column = "column" + $i + $towName + ".cv[0]";select $column;delete;select -cl;

}

Page 37: Nicolas Anderson

//Create Columns OneR !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//Create Columns OneR !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string $gC1R = "";for($i=0; $i<$numSides; $i++){string $columnR = "columnR" + $i + $towName;curve -d 1 -p 0 0 0 -name $columnR;

for($j=1; $j<$numFloors; $j++){

string $x = "pointPosition " + "floorR" + $j + $towName + ".cv[" + $i + "]";

float $p[] = eval($x);curve -a -p ($p[0]) ($p[1]) ($p[2]) $columnR;

}$gC1R = $gC1R + " columnR" + $i + $towName;}string $columnNameR = "ColumnGroupR" + $towName;eval("group -name " + $columnNameR + $gC1R);

//Delete Columns OneR !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

for($i=0; $i<$numSides; $i++){string $columnR = "columnR" + $i + $towName + ".cv[0]";select $columnR;delete;select -cl;

}

Page 38: Nicolas Anderson

//######################################################################//Create and Group Circles!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string $gCir = "";for($i=0; $i<$numSides; $i++){string $circle = "circle" + $i + $towName;circle -d 3 -r $colRad -name $circle;

for($j=1; $j<$numFloors; $j++){float $p[] = eval("pointPosition floor1" + $towName + ".cv[" +

$i + "]");select $circle;move ($p[0]) ($p[1]) ($p[2]);

}$gCir = $gCir + " circle" + $i + $towName;}string $circGroup = "circGroup" + $towName;eval("group -name " + $circGroup + $gCir);

Page 39: Nicolas Anderson

//######################################################################//Create and Group Tubes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string $t1 = "";for($i=0; $i<$numSides; $i++){

string $column = "column" + $i + $towName;string $circle = "circle" + $i + $towName;

select $circle $column;$name = "tube" + $i + $towName;

extrude -ch true -rn false -po 0 -et 2 -ucp 1 -fpt 1 -upn 0 -rotation 0 -scale 1 -rsp 1 -name $name;

select -cl;$t1 = $t1 + " tube" + $i + $towName;

}string $tubeGroup = "tubeGroup" + $towName;eval("group -name " + $tubeGroup + $t1);

Page 40: Nicolas Anderson

//Extrude and Group Floor Plates !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string $plates = "";for($i=1; $i<$numFloors; $i++){

string $floor = "floor" + $i + $towName;select $floor;$name = "plate" + $i + $towName;planarSrf -ch 1 -d 1 -ko 0 -tol 0.01 -rn 0 -po 1 -name $name;polyExtrudeFacet -tz $platThick;select $name;move -r 0 0 ($platThick/(-2));select -cl;$plates = $plates + " plate" + $i + $towName;

}string $plateGroup = "PlateGroup" + $towName;eval("group -name " + $plateGroup + $plates);

Page 41: Nicolas Anderson

//Create Horizontal Tubes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

circle -c 0 0 0 -nr 0 0 1 -sw 360 -r ($colRad2*.8) -d 1 -s 24 -name "TubeLoft";

string $horTubes = "";for($i=1; $i<$numFloors; $i++){

string $floor = "floorR" + $i + $towName;select TubeLoft $floor;$name = "horTubes" + $i + $towName;

extrude -ch true -rn false -po 0 -et 2 -ucp 1 -fpt 1 -upn 1 -rotation 0 -scale 1 -rsp 1 -name $name;

select -cl;$horTubes = $horTubes + " horTubes" + $i + $towName;

}string $horTubesGroup = "HorTubesGroup" + $towName;eval("group -name " + $horTubesGroup + $horTubes);

$towName = $towName + "A";}

Page 42: Nicolas Anderson

grasshopper for rhinomodules of code can be interchanged for plug and play

Page 43: Nicolas Anderson
Page 44: Nicolas Anderson

int $numFloors = 50;int $numSides = 22;int $rotAngle = 1;int $scaleShift = 1;int $floorMf = 25;int $moveZ = 10;float $colRad = 0.5;float $colRad2 = 0.35;float $platThick = 0.5;float $xscale28.6715236;

Page 45: Nicolas Anderson

int $numFloors = 50;int $numSides = 19;int $rotAngle = 1;int $scaleShift = 2;int $floorMf = 25;int $moveZ = 10;float $colRad = 0.5;float $colRad2 = 0.35;float $platThick = 0.5;float $xscale = 22.77299504;

Page 46: Nicolas Anderson

int $numFloors = 50;int $numSides = 6;int $rotAngle = 6;int $scaleShift = 1;int $floorMf = 26;int $moveZ = 10;float $colRad = 0.5;float $colRad2 = 0.35;float $platThick = 0.5;float $xscale29.47656126;float $platThick = 0.5;float $xscale24.19073302;

Page 47: Nicolas Anderson

int $numFloors = 50;int $numSides = 17;int $rotAngle = 18;int $scaleShift = 1;int $floorMf = 25;int $moveZ = 10;float $colRad = 0.5;float $colRad2 = 0.35;float $platThick = 0.5;float $xscale = 20.08793908;

Page 48: Nicolas Anderson

is the designers role in the manipulation of the language of the code? is the designers authorship still embodied within the initial conceptualization? is the final act of design the selection of the form is correct in the designers eyes? are “good accidents” which occur through algorithmic design credited to the designer and his intuition, or just random occurrences left up to post rational interpretations of the designer? (who will know, or will it matter if the code is not made public). this was only a short investigation, but i feel that there are potentials that would allow for a more feasible scheme with ranges of parameters set by structural optimizations. this would ultimately lead to a form in which one or both of the children would again become a diagonally braced structure.

the advantage of approaching such a problem through algorithmic methods rather than tradition geometrical assembly in a software package using predefined graphic user interface (gui) methods are obvious. speed of visualizing solutions and slight deviations of solutions is one advantage of this method, however the combination of experimentation a “good accidents” will be intrinsically more interesting to architectural exploration in the future for the architect.

int $numFloors = 50;int $numSides = 6;int $rotAngle = 6;int $scaleShift = 1;int $floorMf = 26;int $moveZ = 10;float $colRad = 0.5;float $colRad2 = 0.35;float $platThick = 0.5;float $xscale29.47656126;float $platThick = 0.5;float $xscale24.19073302;

?