ALEXANDER H. FARLEY
Massachusetts Institute of Technology 2014 Master of Architecture ALEXANDER FARLEY
ALEXANDER FARLEY
// Studio Work ++Cloud Garden++ Data Center, 2012
006
Ca’ Sublimata, Venetian Museum, 2012
015
Glass Box Laboratory, Lincoln Laboratory Addition, 2011
022
Boston Architectural College Annex, 2011
031
Forrest For The Trees, Kenmore Station, 2011
036
Institute For Contemporary Arts Theater Annex, 2010
038
// Professional Work Purple Residence Addition, 2012
042
Purple Residence Pavilion, 2011
045
Renderings, 2012 - 2013
047
// Scripting + Fabrication Unflat Pavilion, 2011
052
Bubble Wall, 2012
054
Recursions, 2012
056
Objectifications, 2012
057
Flock of Fireflies, 2012 - 2013
058
Press-Fit Tray, 2011
059
ALEXANDER FARLEY
ALEXANDER FARLEY
// Studio Work ++Cloud Garden++ Data Center, 2012
006
Ca’ Sublimata, Venetian Museum, 2012
015
Glass Box Laboratory, Lincoln Laboratory Addition, 2011
022
Boston Architectural College Annex, 2011
031
Forrest For The Trees, Kenmore Station, 2011
036
Institute For Contemporary Arts Theater Annex, 2010
038
// Professional Work // Scripting + Fabrication
ALEXANDER FARLEY
// CA’ SUBLIMATA STUDIO: MIT - MARIA SEGANTINI DURATION: 3.5 MONTHS
SITE: PARCO SAN GIULIANO, VENICE, ITALY
ALEXANDER FARLEY
RHINOCEROS, PYTHON, GRASSHOPPER, 3DS MAX, MAXWELL, V-RAY, THE ADOBE SUITE, AND PHYSICAL MODELLING WERE UTILIZED THROUGHOUT THE SEMESTER
NON-INTERACTIVE/SERVICE PROGRAM
AUDITORIUM
GALLERY
PIANO NOBILE
GALLERY
SALON
PORTEGO
GALLERY
PARTI
PORTEGO
INTERACTIVE/SERVED PROGRAM
PUBLIC SQUARE
FOOD PREPARATION
PROGRAMMING
BOAT RENTAL BOAT STORAGE
POTTERY
THEATER
PUBLIC SQUARE
BUILDING
GALLERY
STUDIO
POTTERY GLASS GALLERY
ADMINISTRATION
STUDIO
STUDIO
WEB MUSEUM
LEVEL 2
STUDIO
MASKS
GALLERY
LEVEL 1
GALLERY
BOAT
CAFE
THEATER
THEATER
BOAT RENTAL
ENTRANCE LEVEL
GALLERY
LEVEL -1
LEVEL -2
GALLERY
GLASS MAKING
GALLERY
CAFE
The rising tides and eroding ground of the Veneto lagoon demands a strategy to connect with the mainland. A failure of many contemporary architectural designs in Venice is the paradoxical embrace of Venetian history and culture with contemporary design. In essence it must exist and notexist at the same time, a kind of sublimation between solid and void. This cultural center propses an adaptation of the Venetian palace typology with its long piano nobile and portego spaces pivoting around a piaza space that visually connects the center with the island of Venice to the West. The center is skinned with a louver system that offers environmental control as well allowing the building to simultaneously exist as a solid and void. ALEXANDER FARLEY
ALEXANDER FARLEY
1:200 MODEL AND CONNECTION WITH SITE
LEVEL -1
ENTRANCE LEVEL
LEVEL 1
LEVEL 2
ALEXANDER FARLEY
SECTION A R
2
1
E
-1
-2
SECTION B
R
2
1
E
-1
-2
3-
SECTION C
R
2
1
E
-1
-2
ALEXANDER FARLEY
SECTION D RR
SECTION D
2 2
1 1
E E
-1-1
-2 -2
SECTION E
RR
SECTION E
2 2
1 1
E E
-1-1
-2 -2
ALEXANDER FARLEY
EAST ELEVATION R
2
1
E
-1
-2
SOUTH ELEVATION R
2
1
E
-1
-2
-3 -3
NORTH ELEVATION R
2
1
E
-1
-2
ALEXANDER FARLEY
VIEW OF VENICE FROM OUTDOOR SQUARE AND CAFE
ARTIST LABS AND COURTYARD
MAIN ENTRANCE AND CENTRAL
DOCK AND BOAT RENTAL
ALEXANDER FARLEY
ALEXANDER FARLEY
ENTRANCE AND OUTDOOR THEATER
// ++ CLOUD GARDEN ++ STUDIO: MIT - SHEILA KENNEDY DURATION: 2.5 MONTHS
SITE: MINNEAPOLIS, MINNESOTA
RHINOCEROS, PYTHON, GRASSHOPPER, 3DS MAX, MAXWELL, V-RAY, THE ADOBE SUITE, AND PHYSICAL MODELLING WERE UTILIZED THROUGHOUT THE SEMESTER
ALEXANDER FARLEY
Energy Generation Granite City St. Cloud, MN
64 MW
Fuel type:
Sharco Becker, MN
2,400 MW
= Hydro Monticello Nuclear Monticello, MN
= Coal
600 MW
= Natural Gas
= Nuclear St. Croix Falls St. Croix Falls, WI
570 MW
RDF
Apple River Somerset, WI
2.9 MW
Riverside Minneapolis, MN
511 MW
Riverdale Somerset, WI
0.6 MW
Alan S. King Bayport, MN
588 MW High Bridge St. Paul, MN
570 MW
Hennepin Island Minneapolis, MN
Blue Lake
Black Dog
Shakopee, MN
Burnsville, MN
612 MW
538 MW
12 MW
South East
Inver Hills
U. Minnesota
? MW
Inver Grove, MN
3.6 MW Prairie Island Welsh, MN
1,100 MW
RDF Red Wing Red Wing, MN
200 MW
The neighborhoods of northwest Minneapolis have
Mississippi River - riverbank change
become separated from the natural amenities of the Mississippi River and the cultural programs available to the rest of the city. At the same time Minneapolis seeks both future-looking commercial
= Scouring of earth from riverbank
opportunities and a brand identity that allows it to remain relevant as a city. The siting of an architectural intervention that
= Deposition of silt on riverbank
42nd Ave
Canadian Pacific RR
Site
systemically integrates a data center with a botanical garden on the northwest bank of the Mississippi River and expands pedestrian infrastructure provides a means for the city to reconnect the Lowry Ave
northwestern neighborhoods with the river park system, create a cultural destination, and spur economic growth. Minneapolis is a city that has long used the river as an economic engine. However,
Burlington Northern Sante Fe RR
this has resulted in a tension between the unavoidable impact of industry on the land and the sacred relationship that Minnesotans
Broadway Ave
have with nature. This design seeks to relieve the historic tension
Plymouth Ave
between industry and nature through the integration of the botanical Northstar Commuter Rail
garden’s climatic systems with the data center’s infrastructural
Hennepin Ave
systems out of which a larger ecology can emerge. The garden
3rd Ave
can become a media-rich environment warmed and enveloped
Stone Arch Bridge HW 18
in an inflatable system generated by the data center waste heat and the data center more efficiently regulate its environmental systems through the mass and biological features of the plants. Michael Maltzan Architecture, Inc.
ALEXANDER FARLEY
Dam + Lock - 1967
= Refuse-derived
ENTRANCE LEVEL
ALEXANDER FARLEY
SECTION A Inflatable - Top Surface
Service Level
Botanical Garden Inflatable - Bottom Surface
Entrance Level + Community Gardens
Park Walkway
Cold Water Inlet
SECTION B Inflatable - Top Surface
Service Level
Botanical Garden Inflatable - Bottom Surface
Entrance Level + Community Gardens
Park Walkway
Cold Water Inlet
SECTION C Inflatable - Top Surface
Service Level
Botanical Garden Inflatable - Bottom Surface
Entrance Level + Community Gardens
Park Walkway
Cold Water Inlet
ALEXANDER FARLEY
INFLATABLE BOTANICAL GARDEN
ALEXANDER FARLEY
PROGRAMMATIC + STRUCTURAL ORGANIZATION
SECTION DETAIL Inflatable manifold skin
Botanical garden
Inflatable manifold skin
Rigid structure + Service chases
Community gardens
Server racks
Cold water inlet
INFRASTRUCTURAL STRATEGY Cold air and added humidity result in precipitation Botanical gardens Community gardens
Heat rises off of servers to warms gardens + warmed water waters plants
Server racks Service / Cooling level
ALEXANDER FARLEY
Cold air from Mississippi River cools server racks
VIEW TOWARDS DOWNTOWN MINNEAPOLIS
ALEXANDER FARLEY
// GLASS BOX LABORATORY
STUDIO: MIT - ANDREW SCOTT - YEAR 2 CORE
DURATION 3.5 MONTHS - FALL 2011 SITE: LINCOLN LABORATORY, LEXINGTON, MA
ALEXANDER FARLEY
This project offers a major expansion to Lincoln Laboratory campus. The current campus is overcrowded and decentralized. This design seeks open the laboratory space and offer new spaces for cross-disciplinary collaboration within an environment maximized for human comfort. The laboratory is an environment that has traditionally acquiesced to the technical and infrastructural needs of the program. This ignores the importance of the human capital that the laboratory serves. It is the comfort of the scientists that leads to innovation. This laboratory proposes a return to the envelope as the source of light and air in order to best serve the researchers. The envelope provides a microclimate that elevates the comfort of the occupants while providing for efficient thermal control of clean room, production and assembly spaces. As an extension of this, the tectonic elements of the laboratory dissipate with each floor; all beneath a roof comprised of nimbular aerogel-insulated ETFE pillows. The result is that through a search for environmental comfort an inversion of indoor and outdoor space can occur.
RHINOCEROS, GRASSHOPPER, 3DS MAX, MAXWELL, V-RAY, THE ADOBE SUITE, AND PHYSICAL MODELLING WERE UTILIZED THROUGHOUT THE SEMESTER
ALEXANDER FARLEY
ENTRANCE LEVEL
ALEXANDER FARLEY
SECOND LEVEL
THIRD LEVEL
FOURTH LEVEL
FIFTH LEVEL
ALEXANDER FARLEY
SECTION B
PREVAILING WIND CHIMNEY EFFECT NAT. VENTILATION CHIMNEY EFFECT NAT. VENTILATION
CHIMNEY EFFECT NAT. VENTILATION
VERTICALLY-MOUNTED AHUs
ENTHALPY WHEEL
HEAT EXCHANGERS FRESH AIR INTAKE
GEOTHERMAL HEAT PUMP
SECTION A GROUP PROJECT OFFICES
MICROSYSTEMS INTEGRATION CLASS 100
GROUP PROJECT OFFICES
GROUP PROJECT OFFICES
MICROSYSTEMS INTEGRATION CLASS 1000
GROUP PROJECT OFFICES
I & T MICROFLUIDICS + BIOSENSORS LAB SERVICE CHASE
VERTICAL CHASE MACHINE SHOP
ALEXANDER FARLEY
LINCOLN LABS - WEST LAB ADDITION - WALL DETAIL
ENVELOPE STRUCTURAL SYSTEM P
H G B D
A A. Aluminum cladding B. Steel curtain wall hanger C. Fiberglass insulation D. Tubular steel column E. Steel mounting flange F. Steel J-anchor G.Tensegrity roof tensioning cable H. ETFE foil I. Tubular steel column J. Tensegrity tubular steel tension rod K. ETFE pillow pressure-regulation hose L. ETFE pressure-regulation valve M. Bird guard N. Grate O. Aluminum gutter P. Granular aerogel insulation
C
E F
I
P
L
N K
O Y X W A. Low-iron insulating glass B. Aluminum window sill C. Oak window sill D. Medium-density concrete E. Gypsum drywall F. Oak floor baord G. Moisture barrier membrane H. Aluminum floor riser I. Floor finish J. Interior glazing K. Extruded aluminum framing L. Drop-ceiling hangers M. Drop ceiling O. Low-density conrete light shelf P. Awning Q. Spider-sytem tensioning cable R. Stainless steel aluminum cladding wall anchor S. Extruded polystyrene insulation T. Alucobond dry-seal aluminum cladding z-clip system U. Spider clip rod V. Spider clip depth-adjustment element W. Spider clip X. Silicone seal Y. Laminated float glass Z. Vertical spider system tensioning cable
Q
Z
J
U V
M
A
R S T
B C D E F G
H
I
ALEXANDER FARLEY
ALEXANDER FARLEY
1/16” = 1’ MODEL
VIEW OF CLEAN ROOMS FROM COLLABORATION SPACE
ALEXANDER FARLEY
ALEXANDER FARLEY
LABORATORY CENTRAL GALLERY
// TRANSPARENT SCHOOL
STUDIO: MIT - JOEL LAMERE - YEAR 1 CORE
DURATION 2 MONTHS - SPRING 2011 SITE: KENMORE SQUARE, BOSTON
RHINOCEROS, GRASSHOPPER, MAXWELL, V-RAY, THE ADOBE SUITE, AND PHYSICAL MODELLING WERE UTILIZED THROUGHOUT THE SEMESTER
ALEXANDER FARLEY
H RT NO N IO AT UL RC CI
NUMBER OF PEOPLE
-S
OU
TH
TEMPORAL CIRCULATION PATTERNS
C IR
CUL
A T IO
NE AS
TWES
T
RED SOX HOME GAME - DAY TIME (
SUMMER DAY - NOON
)
(
)
RUSH HOUR - SUMMER - 8 AM (
)
RUSH HOUR - WINTER - 8 AM (
)
ALEXANDER FARLEY
An extension to the Boston Architectural College loacted in Kenmore Square, Boston. This design seeks transparency in materiality and organization as a means to create a dialogue and discourse with a public unfamiliar with the discipline of architecture. A clear interface between the public and the architecture students is created through a series of inter-digitated gallery / review spaces and observation platforms. A necessary sepparation between the students and the public is achieved through distinct circulation routes. The structural system derives from the embodiment of the tree; offering both strength and shelter while simulataneously allowing the flexible creation of spaces calibrated to programmatic need.
ORGANIZATION
ADMINISTRATION
PRINT / PLOT
COMPUTER LAB
STUDIO
WOOD SHOP
FAB LAB
THEORY
DESIGN
GALLERY
REVIEW
GALLERY
REVIEW
GALLERY
REVIEW
LIBRARY
CLASSROOMS
AUDITORIUM
LOBBY
GENER AL C I R CUL AT ION
CAFE
PRI V A TE C I RC U LATI ON
PU BLI C C I RC U LATI ON
MATERIALS
ORIGINAL SITE PLAN WITH SUBTERRANEAN STRUCTURE
MODIFIED SITE PLAN WITH SUBTERRANEAN STRUCTURE = SITE EXPANSION
ALEXANDER FARLEY
THIRD LEVEL
SECTION A
ALEXANDER FARLEY
CENTRAL GALLERY SPACE
ALEXANDER FARLEY
// FORREST FOR THE TREES
STUDIO: MIT - JOEL LAMERE - YEAR 1 CORE
DURATION 3 WEEKS - SPRING 2011 SITE: KENMORE SQUARE, BOSTON
ALEXANDER FARLEY
RHINOCEROS, GRASSHOPPER, MAXWELL, THE ADOBE SUITE, AND PHYSICAL MODELLING WERE UTILIZED THROUGHOUT THE SEMESTER
DENDRIFORM CANTILEVER MORPHOLOGIES
15’
15 deg
10’
7’
30 deg
ALEXANDER FARLEY
// ICA THEATER ANNEX
STUDIO: MIT - ASHLEY SCHAFER - YEAR 1 CORE DURATION 3 WEEKS - FALL 2010 SITE: FORT POINT, BOSTON
SOUTH VIEW OF THEATER FROM SUMMER STREET
ALEXANDER FARLEY
RHINOCEROS, MAXWELL, THE ADOBE SUITE, AND PHYSICAL MODELLING WERE UTILIZED THROUGHOUT THE SEMESTER
A
A
B
B
CONCERT THEATER PLAN
NORTH ELEVATION
SECTION A
SECTION B
BALLET THEATER PLAN
WEST ELEVATION
ALEXANDER FARLEY
ALEXANDER FARLEY
// Studio Work // Professional Work Purple Residence Addition, 2012
042
Purple Residence Pavilion, 2011
045
Renderings, 2012 - 2013
047
// Scripting + Fabrication
ALEXANDER FARLEY
// PURPLE RESIDENCE ADDITION CLIENTS: LESLIE AND THOMAS PURPLE DESIGNED WITH PATRICK FARLEY SITE: WYNDMOOR, PA JANUARY - MAY 2012 STATUS: UNDER CONSTRUCTION
This project sought to reactivate an unused storage room as the main location for daily activity. The existing space allows for a kitchen and central hearth. The south facing wall is pulled away from the house to allow for greater day-lighting and create a space for casual dining and food and linen storage.
AutoCAD, Revit, Rhinoceros, Maxwell, and physical modelling were used throughout the course of the project.
ALEXANDER FARLEY
23’ 8”
3’
3’
3’
3’
3’
3’
3’
9’ 8’ 9” 18’ 9”
8’ 9”
4’ 4”
21’ 9”
12’
14’ 9”
21’ 8”
4’ 9”
14’ 8”
4’ 9”
12’ 9”
2’ 4”
3’ 9”
4’ 8”
4’ 4”
4’ 4”
4’ 8”
3’ 9”
4’ 6”
25’ 6”
ALEXANDER FARLEY
ALEXANDER FARLEY
PURPLE ADDITION - INTERIOR KITCHEN VIEW
// PURPLE RESIDENCE GARDEN PAVILLION CLIENTS: LESLIE AND THOMAS PURPLE AUGUST 2011 SITE: WYNDMOOR, PA
STANDARD POST-BEAM-RAFTER ASSEMBLY
CORNER POST-BEAM-RAFTER ASSEMBLY
This commission sought to create a vegetable garden enclosure that could protect the plants from backyard pests while maintaining the design language of the existing site. The pavilion employs traditional timber construction techniques and tectonic elements while remaining within a modest budget.
Rhinoceros and physical modeliing were used throughout the course of the project.
SCREW
CORNER ASSEMBLY SCREW
STANDARD ASSEMBLY
SCREW
1” CEDAR FACING
FENCING
1” x 1” CEDAR FACING
SCREW
FENCING
4” x 4” PRESSURE-TREATED
4” x 4” PRESSURE-TREATED
1” CEDAR FACING
1” CEDAR FACING
ALEXANDER FARLEY
SIDE ELEVATION
FRONT ELEVATION 15’ 1-1/2”
4’ 10-1/2”
11’ 8-1/8” 45°
2’ 5-1/4”
8’ 2-1/4”
2’ 5-1/4”
45° 5’ 9-7/8”
5’ 9-7/8” 16’ 3-1/4”
1” x 10” x 6’
1” x 10” x 6’
16’ 3-1/4”
9-1/4” scarf or butt joint
2” x 10” x 10’
2” x 10” x 5’
9-1/4”
2” x 10” x 10’
8’
2” x 10” x 5’
scarf or butt joint
2” x 10” x 5’
2” x 10” x 5’
8’
7’ 2-3/4”
5’
5’
5’
5’
7’ 2-3/4”
5’
5’
5’
5’
15’ 6-1/2”
25’ 6”
SECTION
PLAN 15’ 1-1/4”
2-3/8”
45° 11’ 8-1/8” 2” x 10”
CEDAR
5’ 1” x 2” CEDAR
2” x 10” CEDAR
5’
15’ 6” 9-1/4”
COUNTER-SUNK
0.5” CARRIAGE BOLT
2” x 10” CEDAR
45° 5’
45°
1” CEDAR FACING 8’
7’ 2-3/4”
2” x 2” FENCING B/W FACING AND PT 4” x 4” PRESSURE-TREATED
The corner 2” x 10” s are 9’ 9-7/8” long COUNTER-SUNK
5’
5’
5’
5’
5’
GRADE POST HOLDER CONCRETE FOOTER
ALEXANDER FARLEY
25’ 6”
0.5” CARRIAGE BOLT
FOR SASAKI ASSOCIATES - 2013
FOR ELIZABETH FARLEY - GSD M.ARCH THESIS - 2012
FOR SASAKI ASSOCIATES - 2013
FOR ELIZABETH FARLEY - GSD M.ARCH THESIS - 2012
ALEXANDER FARLEY
FOR ELIZABETH FARLEY - GSD M.ARCH THESIS - 2012
FOR ELIZABETH FARLEY - GSD M.ARCH THESIS - 2012
FOR ELIZABETH FARLEY - GSD M.ARCH THESIS - 2012
FOR THE PLANT CONNECTION - GREENHOUSE ADDITION - 2011
ALEXANDER FARLEY
ALEXANDER FARLEY
ALEXANDER FARLEY
// Studio Work // Professional Work // Scripting + Fabrication Unflat Pavilion, 2011
052
Bubble Wall, 2012
054
Recursions, 2012
056
Objectifications, 2012
057
Flock of Fireflies, 2012 - 2013
058
Press-Fit Tray, 2011
059
ALEXANDER FARLEY
// UNFLAT PAVILION
DESIGNED BY PROF. NICK GELPI FOR MIT 150 DURATION: WINTER - SPRING 2011 SITE: MIT, CAMBRIDGE, MA
SPRING LOADED
ALEXANDER FARLEY
RIGID SLOT
RIGID SILL PLATE
SOLID PLATE
Rhinoceros, MasterCam, and 3-Axis CNC milling were used throughout the course of the project.
Exterior Panel
1.6 in 0.5 in
96 in
Interior Panel
48 in
ALEXANDER FARLEY
// BUBBLE WALL
STUDIO: MIT - EMERGENT MATERIALS WORKSHOP DESIGNED WITH: YANG-PING WANG AND CHRIS MILLER DURATION: SPRING 2012
Adaptation of the Cambridge Public Library doubleskinned facade to use a soap-foam insulation system.
ALEXANDER FARLEY
0 HRS 1 HRS
GLAZING
3 HRS
IRRIGATION SYSTEM
FILTER MEIDA TRAY
6 HRS SPONGE
RESEVOIR
12 HRS AIR COMPRESSOR
SOLUTION COMPOSITION TESTING:
FULL SCALE PROTOTYPE DESIGN:
FULL SCALE PROTOTYPE DOCUMENTATION: ALEXANDER FARLEY
// RECURSIONS
length = len(self.spiral_points) index = range(length)
angle =90 JUHONG PARK STUDIO: MIT - DESIGNING NATURE
for i in index: plane = rs.MovePlane(self.plane, self.spiral_points[i][1]) rotated = rs.RotatePlane(plane, angle, plane.ZAxis) radius = math.fabs(self.spiral_points[i][0][0]) if (radius != 0): arc = rs.AddArc(rotated, radius, self.angle) rs.RotateObject(arc, self.spiral_points[i][1], self.angle) else: radius = math.fabs(self.spiral_points[i][0][1]) arc = rs.AddArc(rotated, radius, self.angle) rs.RotateObject(arc, self.spiral_points[i][1], self.angle)
DURATION: FALL 2012 import rhinoscriptsyntax as rs import math
### Controller class class GoldenSpiral(): def __init__(self): self.NS = None self.phi = (math.sqrt(5)+1)/2 self.plane = rs.WorldXYPlane() # Negative angle for clockwise spiral self.angle = -90 origin = [0,0,0] self.origin = rs.AddPoint(origin)
self.spiralArcList.append(arc) angle -= 90 def main(self): self.makeSpiralPoints() self.makeSpiralArc() self.NS = NautilusShell(self) self.NS.main()
self.spiral_points = [] endPt = [1,0,0] self.endPt = rs.AddPoint(endPt) self.endPts = [] self.endPts.append(endPt) self.spiralArcList = [] def makeSpiralPoints(self): endPt = self.endPt origin = self.origin
### Model class class NautilusShell(): def __init__(self, NS): self.endPts = NS.endPts self.spiralArcList = NS.spiralArcList Koch Curve Lindenmayer Branching self.midpointsList = [] self.quarterpointsList = []
for i in range(12): trans = rs.VectorSubtract(origin, endPt) scaled_trans = rs.VectorScale(trans, self.phi) origin = rs.CopyObject(endPt, scaled_trans) originCoord = rs.PointCoordinates(origin) points = [origin, endPt] tempID = rs.AddCurve(points) lineID = rs.RotateObject(tempID, origin, self.angle) temp_endPt = rs.CurveEndPoint(lineID) endPt = rs.AddPoint(temp_endPt) endPtCoord = rs.PointCoordinates(endPt) self.endPts.append(endPtCoord) rs.DeleteObject(tempID)
self.crossSectionList = [] self.surfaceList = [] self.SP = None def makeControlPoints(self): length = len(self.endPts) index = range(length) for i in index: if (i <=4): pts = [self.endPts[0], self.endPts[i]] lineID = rs.AddCurve(pts, 3) else: pts = [self.endPts[(i - 4)], self.endPts[i]] lineID = rs.AddCurve(pts, 3) points = rs.DivideCurve(lineID, 4)
params = [scaled_trans,Diffusion-Limited originCoord] aggregation tempID = rs.AddPoint(points[1]) Nautilus shell points[1] = self.moveControlQuarterPoint(tempID) self.spiral_points.append(params) tempID = rs.AddPoint(points[2]) points[2] = self.moveControlMidPoint(tempID) def makeSpiralArc(self): tempID = rs.AddPoint(points[3]) ALEXANDER FARLEY
points[3] = self.moveControlQuarterPoint(tempID) rs.DeleteObject(lineID) cross_section = rs.AddCurve(points, 3) self.crossSectionList.append(cross_section) def moveControlQuarterPoint(self, tempID): temp_qPt = rs.PointCoordinates(tempID) temp_endPt = [temp_qPt[0], temp_qPt[1], (temp_qPt[2] - 0.23)] trans = rs.VectorSubtract(temp_qPt, temp_endPt) quarterPt = rs.MoveObject(tempID, trans) return quarterPt def moveControlMidPoint(self, tempID): temp_mPt = rs.PointCoordinates(tempID) temp_endPt = [temp_mPt[0], temp_mPt[1], (temp_mPt[2] - 0.313)] trans = rs.VectorSubtract(temp_mPt, temp_endPt) midPt = rs.MoveObject(tempID, trans) return midPt def makeEdgeSurface(self): # The first four surfaces have to be handled uniquely # first surface curves0 = [self.spiralArcList[0], self.crossSectionList[1]] surface = rs.AddEdgeSrf(curves0) self.surfaceList.append(surface) length = len(self.spiralArcList) index = range(length) Perlin Height field # next three surfaces for i in index: if(i > 0 and i <=3): curves = [self.spiralArcList[i], self.crossSectionList[i], self.crossSectionList[i+1]] surface = rs.AddEdgeSrf(curves) self.surfaceList.append(surface) # all of the other surfaces else: curves = [self.spiralArcList[i], self.spiralArcList[i - 4], self.crossSectionList[i], self.crossSectionList[i+1]] surface = rs.AddEdgeSrf(curves) self.surfaceList.append(surface) length = len(self.surfaceList) #rs.JoinSurfaces(self.surfaceList) def main(self): self.makeControlPoints() self.makeEdgeSurface() self.SP = SurfacePattern(self) self.SP.main()
Swallowâ&#x20AC;&#x2122;s nest attractor ### View class class SurfacePattern(): def __init__(self, GS): self.surfaceList = GS.surfaceList PYTHON, RHINOCEROS,AND DIGITAL FABRICATION
// OBJECTIFICATIONS
length = len(self.spiral_points) index = range(length)
angle =-90JUHONG PARK STUDIO: MIT - DESIGNING NATURE
DURATION: FALL 2012 import rhinoscriptsyntax as rs import math
### Controller class class GoldenSpiral(): def __init__(self): self.NS = None self.phi = (math.sqrt(5)+1)/2 self.plane = rs.WorldXYPlane() # Negative angle for clockwise spiral self.angle = -90 origin = [0,0,0] self.origin = rs.AddPoint(origin) self.spiral_points = [] endPt = [1,0,0] self.endPt = rs.AddPoint(endPt) self.endPts = [] self.endPts.append(endPt) self.spiralArcList = [] def makeSpiralPoints(self): endPt = self.endPt origin = self.origin for i in range(12): trans = rs.VectorSubtract(origin, endPt) scaled_trans = rs.VectorScale(trans, self.phi) origin = rs.CopyObject(endPt, scaled_trans) originCoord = rs.PointCoordinates(origin) points = [origin, endPt] tempID = rs.AddCurve(points) lineID = rs.RotateObject(tempID, origin, self.angle) temp_endPt = rs.CurveEndPoint(lineID) endPt = rs.AddPoint(temp_endPt) endPtCoord = rs.PointCoordinates(endPt) self.endPts.append(endPtCoord) rs.DeleteObject(tempID) params = [scaled_trans, originCoord] Cellular automata
for i in index: plane = rs.MovePlane(self.plane, self.spiral_points[i][1]) rotated = rs.RotatePlane(plane, angle, plane.ZAxis) radius = math.fabs(self.spiral_points[i][0][0]) if (radius != 0): arc = rs.AddArc(rotated, radius, self.angle) rs.RotateObject(arc, self.spiral_points[i][1], self.angle) else: radius = math.fabs(self.spiral_points[i][0][1]) arc = rs.AddArc(rotated, radius, self.angle) rs.RotateObject(arc, self.spiral_points[i][1], self.angle) self.spiralArcList.append(arc) angle -= 90
def main(self): self.makeSpiralPoints() self.makeSpiralArc() self.NS = NautilusShell(self) self.NS.main() ### Model class class NautilusShell(): def __init__(self, NS): self.endPts = NS.endPts self.spiralArcList = NS.spiralArcList self.midpointsList = [] self.quarterpointsList = [] self.crossSectionList = [] self.surfaceList = [] self.SP = None def makeControlPoints(self): length = len(self.endPts) index = range(length) for i in index: if (i <=4): pts = [self.endPts[0], self.endPts[i]] lineID = rs.AddCurve(pts, 3) else: pts = [self.endPts[(i - 4)], self.endPts[i]] lineID = rs.AddCurve(pts, 3) points = rs.DivideCurve(lineID, 4)
tempID = rs.AddPoint(points[1]) Flocking 1 Data visualization points[1] = self.moveControlQuarterPoint(tempID) (Hurricane Sandy) self.spiral_points.append(params) tempID = rs.AddPoint(points[2]) points[2] = self.moveControlMidPoint(tempID) PYTHON, RHINOCEROS,AND DIGITAL FABRICATION def makeSpiralArc(self): tempID = rs.AddPoint(points[3])
points[3] = self.moveControlQuarterPoint(tempID) rs.DeleteObject(lineID) cross_section = rs.AddCurve(points, 3) self.crossSectionList.append(cross_section) def moveControlQuarterPoint(self, tempID): temp_qPt = rs.PointCoordinates(tempID) temp_endPt = [temp_qPt[0], temp_qPt[1], (temp_qPt[2] - 0.23)] trans = rs.VectorSubtract(temp_qPt, temp_endPt) quarterPt = rs.MoveObject(tempID, trans) return quarterPt def moveControlMidPoint(self, tempID): temp_mPt = rs.PointCoordinates(tempID) temp_endPt = [temp_mPt[0], temp_mPt[1], (temp_mPt[2] - 0.313)] trans = rs.VectorSubtract(temp_mPt, temp_endPt) midPt = rs.MoveObject(tempID, trans) return midPt def makeEdgeSurface(self): # The first four surfaces have to be handled uniquely # first surface curves0 = [self.spiralArcList[0], self.crossSectionList[1]] surface = rs.AddEdgeSrf(curves0) self.surfaceList.append(surface) length = len(self.spiralArcList) index = range(length) # next three surfaces for i in index: if(i > 0 and i <=3): curves = [self.spiralArcList[i], self.crossSectionList[i], self.crossSectionList[i+1]] surface = rs.AddEdgeSrf(curves) self.surfaceList.append(surface) # all of the other surfaces else: curves = [self.spiralArcList[i], self.spiralArcList[i - 4], self.crossSectionList[i], self.crossSectionList[i+1]] surface = rs.AddEdgeSrf(curves) self.surfaceList.append(surface) length = len(self.surfaceList) #rs.JoinSurfaces(self.surfaceList) def main(self): self.makeControlPoints() self.makeEdgeSurface() self.SP = SurfacePattern(self) self.SP.main()
Flocking 2 ### View class class SurfacePattern(): def __init__(self, GS): self.surfaceList = GS.surfaceList
Swarming
ALEXANDER FARLEY
// FLOCK OF FIREFLIES
length = len(self.spiral_points) index = range(length)
angle = 90 STUDIO: MIT - ADVANCED COMPUTATION for i in index: INDEPENDENT STUDY plane = rs.MovePlane(self.plane, self.spiral_points[i][1])
DURATION: FALL 2012 - SPRING 2013
rotated = rs.RotatePlane(plane, angle, plane.ZAxis) radius = math.fabs(self.spiral_points[i][0][0]) if (radius != 0): import rhinoscriptsyntax as rs arc = rs.AddArc(rotated, radius, self.angle) import math Project to create a physical volumetric display system for the 3D rs.RotateObject(arc, self.spiral_points[i][1], self.angle) else: modeling program Rhinoceros using Rhinoceros, Grasshopper/Firefly, ### Controller class Python, Arduino microcontroller, and 8x8x8 LED matrix. radius = math.fabs(self.spiral_points[i][0][1]) class GoldenSpiral(): arc = rs.AddArc(rotated, radius, self.angle) def __init__(self): rs.RotateObject(arc, self.spiral_points[i][1], self.angle) self.NS = None self.phi = (math.sqrt(5)+1)/2 self.spiralArcList.append(arc) self.plane = rs.WorldXYPlane() # Negative angle for clockwise spiral angle -= 90 self.angle = -90 origin = [0,0,0] def main(self): self.origin = rs.AddPoint(origin) self.makeSpiralPoints() self.makeSpiralArc() self.spiral_points = [] self.NS = NautilusShell(self) self.NS.main() endPt = [1,0,0] self.endPt = rs.AddPoint(endPt) ### Model class self.endPts = [] class NautilusShell(): self.endPts.append(endPt) def __init__(self, NS): self.endPts = NS.endPts self.spiralArcList = [] self.spiralArcList = NS.spiralArcList def makeSpiralPoints(self): endPt = self.endPt origin = self.origin for i in range(12): trans = rs.VectorSubtract(origin, endPt) scaled_trans = rs.VectorScale(trans, self.phi) origin = rs.CopyObject(endPt, scaled_trans) originCoord = rs.PointCoordinates(origin) points = [origin, endPt] tempID = rs.AddCurve(points) lineID = rs.RotateObject(tempID, origin, self.angle) temp_endPt = rs.CurveEndPoint(lineID) endPt = rs.AddPoint(temp_endPt) endPtCoord = rs.PointCoordinates(endPt) self.endPts.append(endPtCoord) rs.DeleteObject(tempID) params = [scaled_trans, originCoord] self.spiral_points.append(params) def makeSpiralArc(self): ALEXANDER FARLEY
self.midpointsList = [] self.quarterpointsList = [] self.crossSectionList = [] self.surfaceList = [] self.SP = None def makeControlPoints(self): length = len(self.endPts) index = range(length) for i in index: if (i <=4): pts = [self.endPts[0], self.endPts[i]] lineID = rs.AddCurve(pts, 3) else: pts = [self.endPts[(i - 4)], self.endPts[i]] lineID = rs.AddCurve(pts, 3) points = rs.DivideCurve(lineID, 4) tempID = rs.AddPoint(points[1]) points[1] = self.moveControlQuarterPoint(tempID) tempID = rs.AddPoint(points[2]) points[2] = self.moveControlMidPoint(tempID) tempID = rs.AddPoint(points[3])
points[3] = self.moveControlQuarterPoint(tempID) rs.DeleteObject(lineID) cross_section = rs.AddCurve(points, 3) self.crossSectionList.append(cross_section) def moveControlQuarterPoint(self, tempID): temp_qPt = rs.PointCoordinates(tempID) temp_endPt = [temp_qPt[0], temp_qPt[1], (temp_qPt[2] - 0.23)] trans = rs.VectorSubtract(temp_qPt, temp_endPt) quarterPt = rs.MoveObject(tempID, trans) return quarterPt def moveControlMidPoint(self, tempID): temp_mPt = rs.PointCoordinates(tempID) temp_endPt = [temp_mPt[0], temp_mPt[1], (temp_mPt[2] - 0.313)] trans = rs.VectorSubtract(temp_mPt, temp_endPt) midPt = rs.MoveObject(tempID, trans) return midPt def makeEdgeSurface(self): # The first four surfaces have to be handled uniquely # first surface curves0 = [self.spiralArcList[0], self.crossSectionList[1]] surface = rs.AddEdgeSrf(curves0) self.surfaceList.append(surface) length = len(self.spiralArcList) index = range(length) # next three surfaces for i in index: if(i > 0 and i <=3): curves = [self.spiralArcList[i], self.crossSectionList[i], self.crossSectionList[i+1]] surface = rs.AddEdgeSrf(curves) self.surfaceList.append(surface) # all of the other surfaces else: curves = [self.spiralArcList[i], self.spiralArcList[i - 4], self.crossSectionList[i], self.crossSectionList[i+1]] surface = rs.AddEdgeSrf(curves) self.surfaceList.append(surface) length = len(self.surfaceList) #rs.JoinSurfaces(self.surfaceList) def main(self): self.makeControlPoints() self.makeEdgeSurface() self.SP = SurfacePattern(self) self.SP.main() ### View class class SurfacePattern(): def __init__(self, GS): self.surfaceList = GS.surfaceList
// PRESS-FIT STAND
STUDIO: MIT COMPLETE FABRICATION DURATION: 1 WEEK, WINTER 2011
2
1
3
4
Rhinoceros, MasterCam, and 3-Axis CNC milling were used throughout the course of the project.
ALEXANDER FARLEY