Issuu on Google+

Digital Representation [ 4ARC654 ]

Constantina Avraamides [ w1598407 ]

Computational Design [ Group C ]

CONTENTS Part 1: Weekly Exercises 4 1. Principles of parametric design 6 2. Data - structure and management 10 3. Trigonometry 16 4. Vectors 21 5. Basic Processing Concepts 26 6. Object Oriented Programming Paradigm 29 7. Platform Communication 32 8. NURBS, Parameter Space and Recursion 38 Part 2: Studio Work 46 9. Particle Simulation & Hydrological Prototype 48 10. Mapping the Pallikaranai Transect 62 Appendicex: 11. Processing for Data Visualization

68 70

References 12. Figure References 13. Bibliography

74 76 78

[ Part 1 ]

WEEKLY EXERCISES The first section of the report is focused on principles of parametric design taught in class and the use of scripting techniques to generate shapes. Part 1 has 8 chapters, each based on the weekly tutorials of the module containing drawings, diagrams, images and text explaining the logic behind the computational processes developed. In chapters 1 to 4 the theory behind mathimatical principles and their applications in architecture are investigated with the use of the Grasshopper plugin for Rhino. In chapters 5 to 8 scripting is introduced as a tool to generate form with the java based language for Processing.

1. Principles of parametric design Ruled Surfaces


Uses in Architecture

A ruled surface is a surface swept out by a straight line (L) moving along a curve b. “Such a surface thus always has a parameterization in ruled form“ (O’Neill, 1966).

A hyperboloid is a quadratic surface which may be one- or two-sheeted. “The hyperboloid is a surface of revolution obtained by rotating a hyperbola about the perpendicular bisector to the line between the foci, while the two-sheeted hyperboloid is a surface of revolution obtained by rotating a hyperbola about the line joining the foci” (Hilbert and CohnVossen, 1999, pg. 11).

Hyperboloid Structures are made by a lattice of straight beams and have a negative Gaussian curvature, meaning they curve inwards. One-sheeted hyperboloids are typically used in construction for their high stability properties towards outside forces in relation to other ‘straight’ buildings. However, as they have low space efficiency they are more commonly used in purpose-driven structures such as water and cooling towers or for aesthetic features.

Ruled surfaces can be generated using Cartesian equations, where b is the base curve and d is the director curve, including: x(u,v)=b(u)+v d(u) or x(u,v)=b(v)+u d(v) Examples of ruled surfaces are shown below, including the Right Hellicoid (Fig.1.1), the Plucker’s Conoid, (Fig.1.2), the Hyperbolic Paraboloid (Fig.1.3) and the Moebius Strip (Fig.1.4). In the following chapter two types of ruled surfaces are explored further including the theory behind their construction and application in real life.

Fig.1.1: Right Helicoid

Fig.1.2: Plucker’s Conoid

Fig.1.3: Hyperbolic Paraboloid

Fig.1.4: Moebius Strip

Constantina Avraamides _w1598407 [4ARC654]

A hyperboloid is described by the following Cartesian equation:

x +y -z =1 2



Parametric equation:

where: a = skirt radius c = constant number

x = a √ (1+ u2 ) cos v y = a √ (1+ u2 ) sin v z=cu

The first hyperbolic structure built was the 37m high Shukov water tower (Fig. 1.6) by Vladimir Shukhov. Built in 1896 in Dankovsky District Russia, Shukhov Tower was a steel diagrid tower that is preserved until today. A more recent example is the Kobe Port Tower (Fig. 1.7) completed in 1963. The 108 m high lattice tower in the port city of Kobe, Japan, has an observation deck at a height of 90.28 metres.

Fig.1.6: Shukov Tower grid shell

Fig.1.7: Kobe Port Tower

Fig.1.5: A one-sheeted hyperboloid 6

Constructing a Hyperboloid In order to construct a hyperboloid using Grasshopper a cylinder must be constructed first. Then the lines that swipe the cylinder’s surface are remapped so that they connect two points which are not perpendicular to one another. This results to a parametric hyperboloid, as shown below (Fig.1.8).

Fig.1.13: List Index: 1

Fig.1.14: List Index: 6

Fig.1.15: List Index:10

Fig.1.10: Offset a circle Fig.1.8: Hyperboloid construction diagram sketch Firstly, a circle with the desired radius, 20, is constructed using the circle and number slider components (Fig.1.9). Then a second circle with the same radius, 20, is offset along the z-axis, using the plane offset component (Fig.1.10). Then the two circles are divided with the same number of segments, using the divide curve component, creating points on the circumference of each circle. The points are subsequently connected with straight perpendicular lines to construct a cylinder. (Fig.1.11). A point on the circumference of the upper circle is linked with any non-perpendicular point on the circumference of the lower circle. The numbering sequence of the dividing points on the top circle is shifted, using the shift list component. (Fig.1.12-1.15) creating a surface of revolution. The list item component indicates the nth index of the list. In the example below the first index of the list is selected (Fig.1.13). Shifting the index of the list by 6, creates a surface of revolution. (Fig.1.14) Shifting the index of the list by 10, which is half the number of divisions on the circles creates a surface of revolution that meets at the centre. (Fig.1.15). Ultimately, a surface along the z-axis is created, using the revolution component. The components are then baked bringing the surface back into rhino.(Fig.1.16- 1.19).

Fig.1.9: Construct a circle Constantina Avraamides _w1598407 [4ARC654]

Fig.1.16: Creating a surface

Fig.1.11: Construct a cylinder

Fig.1.12: Shifting the List

Fig.1.17: Surface in grasshopper

Fig.1.18: Surface in rhino

Fig.1.19: Wireframe Elevation View

Fig.1.20: Wireframe Plan View 7


Uses in Architecture

The helicoid is characterised by a minimal surface area between a pair of helix. “It is the only ruled minimal surface other than the plane and the only non-rotary surface which can glide along itself” (Weisstein, ND).

Helicoids are widely used in architecture mainly for the constrution of spiral staircases (Fig.1.22-23) and sculptures (Fig. 1.26). However more recently, the hellicoid ruled surface has been used in the construction of spiral skyscrappers such as the spiral F&F Tower in Panama (Fig. 1.24) and the Evolution Tower in Moscow (Fig. 1.25).

For many years it was believed that the helicoid was the only example of a complete embedded minimal surface of finite topology with infinite curvature. However, in 1992 a helicoid known as Hoffman’s minimal surface was discovered, consisting of a helicoid with a hole in the midde.

Helix Spire, by Erich Remash and Chris Thomas (Fig. 1.26), is a temporary sculptural climbing tower that rises 25 feet aboe the ground. The Helix was designed to be easy to climb, light weight and relatively inexpensive, flammable and easy to see from a distance day or night. It was built twice in 2010. First at LARC near Conway Washington for Critical Massive and then at Nevada’s Black Rock Desert, for the Burning Man festival.

The equation of a helicoid in cylindrical coordinates is: In Cartesian coordinates, it is:

The F&F Tower (previously known as the Revolution Tower) is an office tower in Panama City, with a total internal space of 60,753 m². The glass and reinforced concrete tower, completed in 2011, reaches 242.9m high, making it the 12th tallest building in Latin America. Evolution Tower in Moscow was completed in 2015. Designed by Gorproject and RMJM architects, is also an office tower, 245.9m tall.

z=cθ y/x = tan (z/c)

It can be given in parametric form by: x = u cos v y = u sin v z=cv Fig.1.22: Spiral Staircase

Fig.1.23: Spiral Staircase

Fig.1.24: F&F Tower

Fig.1.25: Evolution Tower

Fig.1.26: Helix Spire

Fig.1.21: A Helicoid, Source Constantina Avraamides _w1598407 [4ARC654]


Constructing a Helicoid A helicoid is constructed in grasshopper, using the following equations to define its points: x(u,v) = cos(α) x sinh(v) x sin(u) + sin(α) x cosh(v) x cos(u) y(u,v) = -cos(α) x sinh(v) x cos(u) + sin(α) x cosh(v) x sin(u) z(u,v) = u x cos(α) + v x sin(α) α = 0 corresponds to the helicoid: Fig.1.28: Generate the single helix

cos(α) = cos (0) = 1 sin(α) = sin(0) = 0 substituted in each of the equations: x(u,v) = 1 x sinh(v) x sin(u) + 0 x cosh(v) x cos(u) y(u,v) = -1 x sinh(v) x cos(u) + 0 x cosh(v) x sin(u) z(u,v) = u x 1 + v x 0 results to the simplified equations: x(u,v) = sinh(v) x sin(u) y(u,v) = -sinh(v) x cos(u) z(u,v) = u

Fig.1.29: Generate two helix

Height: 100 Points: 500

Helix radius 1: 3 Helix radius 2: 3.6

Height: 100 Points: 500

Helix radius 1: 3 Helix radius 2: 1

Fig.1.32: Helicoid

Fig.1.33: Helicoid

Height: 50 Points: 19

Height: 50 Points: 128

Firstly, a domain is created using the range component. Then a single helix is constructed, by importing the above equations into the evaluate component (Fig.1.27). The points generated are then joined into a single curve using the interpolate curve component (Fig.1.28). A second helix is generated using the same components with a different radius (Fig. 1.29). Using the loft component a surface is created between the two curves (Fig.1.31), creating a helicoid (Fig.1.32). Adjusting the radius of each helix and the number of points on each helix results to different helicoids. (Fig. 1.33 - 1.35). Fig.1.30: Helix process diagram x coordinates:

y coordinates: Fig.1.27: Generate the domain Constantina Avraamides _w1598407 [4ARC654]

Fig.1.31: Generate the surface

Helix radius 1: 3 Helix radius 2: 1

Fig.1.34: Helicoid

Helix radius 1: 3 Helix radius 2: 2

Fig.1.35: Helicoid 9

2. Data - structure and management Tilings / Tesselations / Geometric Patterns Tilings, tesselations and geometric patterns are created when a surface is subdived into smaller parts, which are then repeated, without any overlaps or any gaps in between. Tilings refer to a pattern of regular polygons only, while tessellations can be formed from regular and irregular polygons. Tilings can be either periodic or non-periodic. Examples of periodic tilings include regular tessellations. Only three types of regular tessellations exist; those made up of equilateral triangles, squares, or hexagons, as shown below (Fig. 2.1).

Fig. 2.5 : Jame Mosque of Yazd, Persia More examples of tesselations can be found in M.C. Escher’s work. Although Escher had no deep knowledge of mathematics, through his later work (Fig. 2.6) he reveals an extensive understanding of tilings of the plane. As he stated, “Although I am absolutely innocent of training or knowledge in the exact sciences, I often seem to have more in common with mathematicians than with my fellow artists”(Escher, 2001, pg. 6).

Fig.2.1: Regular Tessellations

Uses in Architecture Geometric patterns are very common in art and architecture, typically associated with Islamic Art. Islamic patterns are based on Greek and Roman geometry, which is complicated and elaborated upon, creating a new form of decoration that “stresses the importance of unity and order” (Department of Islamic Art, The Metropolitan Museum of Art, 2001). In Islamic art the circle represents unity and the ultimate source of all diversity in creation. The natural division of the circle into regular divisions is the ritual starting point for many traditional Islamic patterns, as demonstrated in the drawings below (Fig 2.2).

Fig. 2.3: Mosaic on the ceiling of poet Haphez's tomb in Shiraz, Iran

Islamic art encompasses a compination of geometric patterns, calligraphy and vegetal patterns, used to adorn surfaces of monumental Islamic architecture but also function as the major decorative element on a vast array of objects of all types. (Fig 2.3 - 2.5).

Fig 2.2: Division of the circle Constantina Avraamides _w1598407 [4ARC654]

Fig.2.6: Examples of Escher’s tesselations

Fig. 2.4: Mosaic on the dome of Sheikh Lotfollah Mosque in Isfaham 10

Simple Linear pattern

Fig. 2.7: Simple linear pattern sketch To create a simple linear pattern in grasshopper similar to the sketch above (Fig. 2.7) two rows of points are generated using the series and the construct a point components (Fig. 2.8).

Fig. 2.9: Omit specific points

Next, specific points are omitted from each list in order to create basic points for the zig-zag pattern. Using the cull list component the first list is set with a True-False boolean and the second list is set with a False-True boolean so that the selected points of each list alternate. (Fig. 2.9) Fig. 2.12: Mirroring the pattern

Then a line connecting the two lists of points is created, by sorting the points of each list, so that the first point of list A is connected to the first point of list B, the second point of list A is connected to the second point of list B and so on. The points are sorted using the weaver component which is then connected onto the polyline component. (Fig. 2.10) Following the same principle a third set of points is created using the series component. Using another weaver and polyline component a new polyline is drawn to create a linear pattern. (Fig. 2.11)

Fig. 2.10: Creating the polyline

Applying the same process again and converting the y values of the points to negative values the set of polylines are mirrored along the x-axis. (Fig. 2.12). By varying the distances of the points different patterns are created with different shapes and scales. (Fig. 2.13)

Fig. 2.8: Constructing the points script Constantina Avraamides _w1598407 [4ARC654]

Fig. 2.11: Creating second polyline

Fig. 2.13: Changing the pattern 11

Circular pattern A circular geometry similar to the one of an Islamic pattern can also by generated in grasshopper using the same principles as above. Firstly, a set of points are arrayed on a circle using the circle geometry and divide the cirve components. The circle can be rescaled from the centre using the scale component to create additional circles of various sizes. (Fig.2.14). Using the cull pattern component, points on the outer and inner circles are linked to create a star shaped polyline. A False- True boolean is set for the list of points of the outer circle and a True-False boolean is set for the second list of points on the inner circle. (Fig. 2.15). Generating multiple circles around the same centre and by using a different boolean pattern on each cull pattern component creates a circular pattern, which becomes part of the mortif. (Fig. 2.16 - Fig. 2.17). By changing the scale of the circles and the number of points on each circle different patterns can be generated (Fig. 2.18 - 2.19). The same base pattern can be coloured in different ways, using photoshop to generate mesmerising results (Fig.2.20)

Fig. 2.18: Changing the number of diving points on the curve, always to an even number. Number of divisions from Left to Right: 10, 12, 16.

Fig. 2.16: Drawing multiple star shaped polylines

Fig. 2.14: Generating sets of points on circles script

Fig. 2.19: Scaling the circles from the centre generates different patterns

Fig. 2.15: Drawing a star shaped polyline Constantina Avraamides _w1598407 [4ARC654]

Fig. 2.17: Pattern derived from dividing the circle

Fig. 2.20: Coloured base pattern 12

Mandala patterns A mandala is a graphic circular symbol used in Hindu and Buddist religions to represent the universe. Typically a deity is drawn in a circle that encloses a square.

Step 2

Step 1

Step 3 Step 4

In this exercise (Fig.2.21) the generation of a circular mandala pattern is explored using simple geometric rules instead of list managament principles. This exercise can be used as the first step of creating the base pattern, as shown on the previous example. Firstly, a circle of any radius is drawn into rhino that is then referenced into grasshopper, using the circle component. A scale component is then used to link the referenced circle and a number slider that allows the circle to be scaled to any desired radius. A divide curve component is then linked to the scale component, creating points on the scaled circle. Following, a line component is used to create lines between the dividing points and the tangents of the scaled circle. A divide curve component is used again creating points on the lines. Finally, a circle CNR component is used to create smaller circles that have the points generated in the prevous step as their centre. A pipe component can be added, making the 2D geometric pattern into a 3D geometry (Fig. 2.22). By adjusting the number slider component, the radii of the circles can be changed, resulting to different patterns (Fig. 2.23).

Step 5

Fig. 2.21: Mandala Pattern script

Step 1

Step 2

Step 3

Step 4

Step 5

Fig. 2.22: Mandala diagram

Number slider 1: 5 Number slider 2: 46 Number slider 3: 5

Number slider 1: 3 Number slider 2: 30 Number slider 3: 6

Number slider 1: 6 Number slider 2: 20 Number slider 3: 9

Fig. 2.23: Varying the Mandala Pattern Constantina Avraamides _w1598407 [4ARC654]


Arrying the circular pattern Using one of the circular geometries generated in the previous exercises an array of geometries can be created. Using the series component two lists are created, which are then cross referenced to generate a grid of points that can be adjusted using the slider component. (Fig. 2.21) The circular geometry generated needs to be rotated so that the points of the stars will align with each other, using the rotate component (Fig. 2.22). Points and circles are hidden so that only the desired polylines form part of the motif. The geometries are then arrayed on the grid of points using the orient plane component. A different component needs to be used for each geometry, therefore in this case 4 orient geometry components are used (Fig. 2.23). The pattern can be adjusted parametrically using the number slider (Fig. 2.24. Fig 2.25).

Fig. 2.27: Adjusting the N to 54 and 75 on each series component

Fig. 2.24: Grid of points script

Fig. 2.25: Rotating the geometry script Constantina Avraamides _w1598407 [4ARC654]

Fig. 2.26: Orienting the geometry along the grid of points to create a pattern

Fig. 2.28: Adjusting the N of series component to 54 on both 14

Fig. 2.29: Coloured Pattern A

Fig. 2.31: Coloured Pattern C

Fig. 2.30: Coloured Pattern B

Fig. 2.32: Coloured Pattern D

Constantina Avraamides _w1598407 [4ARC654]


3. Trigonometry Uses in Architecture

Parametric modeling - Form

Trigonometry is used in architecture to ensure buildings are built safely, by calculating exact angles of intersection for the components of a structure. Examples of trigonometric use include arches and domes, seen as early as Roman ages (Fig. 3.1 - 3.2), as well as more contemporary examples of support beams and suspension bridges (Fig. 3.3). Trigonometry can also be used to define the form of a building. Examples of skyscrapers utilising trigonometry in their form are the Gherkin in London, by Fosters and Partners built in 2003 (Fig. 3.4) and the Absolute Towers by MAD Architects, in Ontario completed in 2012 (Fig.3.5).

Understanding the design principles of trigonometric curves and their application in building the Gherkin were explored in class. The exercise below is an attempt to replicate the design principles of one of the Absolute Towers using trigonometry, based on the online tutorial “Grasshopper Tutorial, Parametric Tower” (OM, 2016).

Fig. 3.1: Arches of Pont du Gard aquaduct, France

Firstly, the plans are analysed. Each floor has an elliptical shape, slighlty rotating above the other, giving the tower its characteristic “twisting fluidity” (ArchDaily, 2012). The elliptical shape is created using the ellipse component. Using the move and the unit-Z component, the ellipse is replicated along the z-axis, resulting in a cylindrical form. Using the range component, the floor to ceiling height and the number of floors are indicated (Fig.3.6).

Fig. 3.3: Suspension Bridge, The Millennium Bridge, London by Fosters and Partners

Fig. 3.6: Base Cylindrical form script (Step 1)

Fig. 3.7: Rotation of ellipses script (Step 2)

Fig. 3.2: Dome of Pantheon, Rome Constantina Avraamides _w1598407 [4ARC654]

Fig. 3.4: The Gherkin, London

Fig. 3.5: Absolute Towers, Ontario 16

Using the subtraction component, each floor is selected and is then rotated using the radians component. An axis is created along the centre of the ellipses as a reference point for the rotation exercise, using the rotate axis component (Fig.3.7). The original ellipses are then switched off, resulting to a rotating elliptical form. To manipulate the ellipses a sine curve is applied on the form. The graph mapper component with a standard sine graph type is used. A range between the values of 1 and 4 is defined, using the domain and the range components. The curve is then applied on the extruded ellipses, using the area and scale components (Fig.3.8). The rotate axis component is switched off resulting to a sine curve, rotating form.

Fig. 3.10: Constructing balconies and building envelope script (Step 6 -8)

Fig. 3.8: Apply sine curve on ellipses script (Step 3 - Step 4) Then connecting the planar surface component, a surface is created in every ellipse. Extruding each surface by 0.35 along the Z-axis, results to the floor slabs of the tower (Fig.3.9). Step 1

Step 2

Step 3

Step 4

Step 5

Step 6

Step 7

Step 8

Fig. 3.9: Creating floor slabs script (Step 5) Before the building envelope is drawn, balconies are added in the tower. Using the Brep Edges component, the edges of each ellipse are extracted and are then scaled down, creating an outline for the building envelope. The list containing the balcony edges is flattened making it into a single list. The edges are extruded again along the z-axis, creating railings for the balconies. Finally, the internal boundaries of the ellipses are lofted, creating the building envelope (Fig.3.10). Constantina Avraamides _w1598407 [4ARC654]

Fig. 3.11: Parametric Tower progression diagram

Fig. 3.12: Parametric Tower 17

Parametric modeling - Facade panels Continuing with the form created in the exercise above, this exercise seeks to derive facade panels, using trigonometric principles taught in class. The form generated above is simplified by removing the components responsible for balconies, so that the external envelope of the building can be manipulated easily (Fig. 3.14). Step 1

In order to create triangular panels on the surface of the facade, a UV grid is first generated on the surface, using the Divide Surface and Number Slider components. Dividing the surface generates points in a list, which then have to be manipulated to form the coordinates of two sets of triangular surfaces as shown in the sketch below (Fig.3.13) in green and white.

Step 2

Fig. 3.14: Parametric tower script A-coordinate


Step 4


Fig. 3.13: Two sets of triangular surfaces sketch To get the first coordinate of the green surfaces, the list is flipped using the Flip Matrix component and the last item of the list is removed using cull index component. For the second coordinate the list is flipped again but the first item of the list is removed. To generate the third coordinate the first item of the list is first removed, then the list is flipped and the first item is removed again. To generate the fourth coordinate required (the second coordinate of the white surfaces) the first item of the list is removed, and then the list is flipped using Flip Matrix component. Finaly the coordinates are joined to form surfaces using the 4pointSurface component. (Fig.3.15) After the surfaces are generated, a coloured pattern is added representing the glass of the tower. Each of the list of surfaces is manilulated using the Cull pattern component with a True and False pattern. (Fig 3.16) Following, the coordinates A and C are joined using the Line component which is then linked to the Pipe component creating the structure of the tower (Fig. 3.17). Finally mullions are added on the facade to give the tower a more lifelike appearance. A standard grid is generated which is then linked on the surface using the Map Surface component (Fig. 3.18). Constantina Avraamides _w1598407 [4ARC654]

Step 3


Step 5

Fig. 3.15: Triangulation of facade by list management Step 6



Step 9

Step 7

Fig. 3.16: Glass Pattern (Step 8)

Fig. 3.17: Tower Structure 18

Fig. 3.18: Mullions (Step 10)

Step 1

Step 2

Step 3

Step 4

Step 5

Step 6

Step 7

Step 8

Step 9

Step 10

Fig. 3.19: Facade Paneling progression diagram Constantina Avraamides _w1598407 [4ARC654]

Fig. 3.20: Paneling on Tower

Fig. 3.21: Facade Panelling Detail 19

Variations of parametric tower The same script used for the exercise above can easily by manipulated by adjusting a few parameters that define the curve, as shown in the examples below. Different colour swatches are used for each variation to clearly distinguish them. For the first variation a different sine curve graph is used (Fig. 3.22), with a greater amplitude, rusulting to a more “curvaceous� tower (Fig. 3.25 ). In the second variation of the tower the slider attached in the multiplication component is adjusted to a value of 3 (Fig. 3.23). A greater multiplication parameter results to a more dramatic tower with a greater area. (Fig. 3.26 ). In the third variation, a greater range is given to the sine curve, between 0.3 and 4 (Fig. 3.24). This creates a tower that follows a curve with a higher frequency (Fig. 3.27 ).

Front View

Front View

Front View

Perspective View

Perspective View

Perspective View

Fig. 3.25: Variation 1

Fig. 3.26: Variation 2

Fig. 3.27: Variation 3

Fig. 3.22: Variation of the sine curve graph

Fig. 3.23: Variation of the multiplication component

Fig. 3.24: Greater range values Constantina Avraamides _w1598407 [4ARC654]


4. Vectors Uses in Architecture Vectors are used in architecture in the design of responsive building elements. Building elements that change according to environmental conditions and buildings that can adapt a characteristic of their form, shape or colour based on an actuator. “Responsive building elements are essential technologies for the exploitation of the environmental and renewable energy resources and in the development of responsive building concepts” (AECOM, 2011, pg. 13). Examples of responsive building elements include facade, solar shading and roof systems. One of the early examples of a responsive element in architecture is Jean Nuvelle’s Institude du Monde Arabe, built in 1987, in Paris. The windows on the South facade are composed of photoelectric cells that control metal apertures according to the outdoor light conditions. (Fig.4.1) This system functions as a heat and light control system controlled by a single mechanism. Another example of a responsive facade that functions as a solar system to allow comfortable indoor conditions is facade of the Al Bahar Toewers, in Abu Dabi. The 145m towers were completed in 2012, by Aedas Architects. Using computer simulated parametric modeling that utilises vectors, the team was able to simulate how the facade would respond to sun exposure during different time periods. (Fig.4.2). Each shading unit comprises of a series of PTFE panels that open and close progressively during the day. (Fig. 4.3).

Fig. 4.4: The Airflow(er) Responsive Ventilation System, Lift Architects

Fig. 4.2: Al Bahar Towers Responsive Facade, Abu Dabi

Fig. 4.3: Al Bahar Towers Facade Mechanism diagram Other examples of responsive elements include the Air Flow(er) and the Hyposurface. The Air Flow(er) (Fig.4.4) is an energy independent thermally active ventilation device. The four leaf prototype behaves like a flower, whose flaps open wide when exposed to warmer temperatures. Designed by Lift Architects this system can be used as either the exterior or interior face of a naturally ventilated double-skin facade system.

Fig. 4.5: Hyposurface, Interactive Display System

The Hyposurface (Fig.4.5) is an interactive display system, made up of small interlocking panels that actualy move to a wide variety of shapes. The system was designed by Mark Goulthorpe and the dECOi office along with a large multi-disciplinary team of architects, engineers, mathematicians and computer programmers, in 2001. Fig. 4.1: Institude du Monde Arabe, Responsive Facade, Paris, by Jean Nuvelle Constantina Avraamides _w1598407 [4ARC654]


Responsive component The aim of this exercise is to build a responsive component utilising vectors. Referencing the online tutorial “Grasshopper - Aperture System Tutorial“ (Christev, 2016) the component is applied onto the parametric model built in the previous chapter and becomes responsive to an external parameter. First the responsive component, an aperture system made up of triangular panels is constructed independently (Fig.4.8). A polygon and a slider component are used to create the basic triangle. Then the explode component is used giving the segments and the vertices of the polygon as two different lists. As it is a closed geometry, the list of vertices has 4 items. The first and the last items are identical. Only the first 3 items are required therefore, a cull index component is used to remove the last item of the vertices list. The centre point of the triangle is generated using either the area component or the average component which is more efficient computationally. Then the midpoint of each triangle segment is generated by exploding the segments and linking them into an average component. A line is created from the centre of the triangle to the midpoint of each segment. An evaluate curve component, linked to a 0.00-1 slider, is used to generate a point on the line linking the midpoint of the segments to the centre of the polygon. Then lines are constructed, from the vertices of the original triangle to the points, to form the basic 2D geometry. (Fig.4.6). A 2D surface is cenerated using the extrude curve component. Changing the index of the slider, the aperture of the basic 2D shape is controlled (Fig.4.7).

Step 1

Step 2

Fig. 4.6: Basic 2D geometry diagram

Step 3

Fig. 4.8: Basic 2D Aperture script The surface can me made into a 3D surface by plugging a number slider on Z-value of the construct point component (Fig.4.9). Adding a negative component extrudes the curve in both directions. This results to two different curves in every list, one extruded upwards and the other extruded downwards. Therefore a shift path and join curve components are used, resulting into 6 curves joined into 1 closed curve, extruded in both directions. Finally a Brep join component is used to make the curve into a solid piece of geometry. The height of the geometry can be controlled by adjusting the slider parameter (Fig.4.10).

A component that moves and changes parametrically is constructed using the above script. By adjusting the three number sliders, the basic component can change in shape height and aperture (Fig.4.11).

Polygon segments: 5 Aperture index: 0.4 Height index: 0.8

Polygon segments: 5 Aperture index: 0.2 Height index: 0.8

Polygon segments: 9 Aperture index: 0.6 Height index: 0.2

Polygon segments: 9 Aperture index: 0.2 Height index: 0.2

Step 4

Fig. 4.9: 3D Aperture geometry script

Fig. 4.11: Changing the basic component

Aperture index: 0.2

Aperture index: 0.5

Fig. 4.7: Controlling the aperture

Constantina Avraamides _w1598407 [4ARC654]

Aperture index: 0.7

Height index: 0.0

Height index: 0.3

Height index: 0.8

Fig. 4.10: Controlling the height 22

Attractor points In this exercise the concept of basic attractor point is explored (Fig.4.13) based on the online tutorial “Grasshopper - Intro to Attractor Points� (Paramarch 2016) . First a basic grid of triangles is generated using the triangular grid component in grasshopper. Adding a surface component generates a surface on the existing grid. Then the attractor point is generated using the construct point component. A shpere component is added to visualise clearly the location of the point clearly. The location of the attractor point will now determine the aperture of the triangle in the grid. Using the closest point component the distance between the attractor point and the centre point of each triangle, given by the area component, is determined. The bounds component gives the minimum and maximum values of the list of distances. The remap component is used to scale the distance values of the centre of each triangle to the attractor point proportionally. This determines which triangles will respond to the attractor points. Finally changing the slider of the target input on the remap component changes the amount of opening of the triangles.

Fig. 4.13: Attractor point script

Aperture range: 0.1 - 1.0

Aperture range: 0.5 - 1.0

Aperture range: 0.2 - .08

Fig. 4.14: Aperture ranges

Fig. 4.12: Attractor point diagram Constantina Avraamides _w1598407 [4ARC654]


Mapping component on a surface For this exercise the component built above (Fig.4.15) will be mapped on the surface of the tower created in the previous chapter. The first part of the script of the parametric tower used in chapter 3 is used to generate a lofted surface. Since the component that will be mapped onto the surface has a triangular geometry, a triangular grid is generated using the TriGrid component. A bounding box is linked to that, which is in turn Fig. 4.15: Triangular mapped onto the surface using the Map Surface component component (Fig.4.17). Then the component generated, is mapped on each of the triangles of the triangular grid, by replacing the polygon component with the map surface component. A shift path component is added so that the inputs of the line component have the same data structure. The basic 2D component is mapped on the surface of the tower (Fig.4.18). Then each component is mapped to the centre point of each surface using the surface centre point component and a deconstruct plane component. Finally an amplitude and move component are connected to the extrude component, allowing the manipulation of the triangular panel, using a slider component (Fig.4.19).

Fig. 4.17: Create Grid on Surface

added superseded

Fig. 4.18: Manipulating component script


Fig. 4.16: Mapping component on surface model diagram Constantina Avraamides _w1598407 [4ARC654]

Fig. 4.19: Manipulating component script 24

Responsive to External Parameters For this exercise the model built before becomes responsive to an external parameter, such as the location of the sun, mimicking the Al Bahar towers, based on the online tutorial “Paneling with Morph Geometry� (Senske, 2011). First a simple sun path is created, using the evaluate curve component to recreate the path of the sun and the sphere component to visualize the position of the sun (Fig. 4. 20). The parameter connected to the evaluate curve component will be responsible for the responsive facade. It has a range of 0.5 since during the night there is no sun therefore the facade will not be responsive.

Fig. 4.20: Sun path script The basic principle of the responsive facade is that, when the sun is closer to the components, they will be completely closed, functioning as a shading device. Therefore, the distance between the centre point of each component and the sphere becomes the factor that affects the aperture of each component.

Fig. 4.21: Sun path script

A distance component is used that gives a list of distances between 120 and 350 units. These values are changed into factor values of the distance to the sun, with a range between 0 and 1, using the remap numbers component. The ouput of the remap numbers component is now the input that controls both the aperture and the height of the triangular component mapped on the surface of the tower. (Fig. 4. 21) Changing the position of the sphere using the slider components in figure 4.20, the components on the tower open and close accordingly (Fig.4.22). Further investigation is necessary for this exercise to acheive the goal set, as the components at the top of the tower behave differently than the components at the bottom. All of the components respond to the position of the sphere, yet the components at the top remain at an almost open position while those at the bottom remain almost closed position even if the sphere is positioned at the top of the tower. Fig. 4.22: Responsive Tower diagram Constantina Avraamides _w1598407 [4ARC654]


5. Basic Programming Concepts Proccessing Basic Concepts

Rotate Transformation

Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Being an open source platform it has promoted software literacy within the visual arts and visual literacy within technology.

The logical sequence followed to reach the aim of the exercise was the following:

During this week’s workshop the key scripting concepts of operators and conditional statements were explored including transformations (rotate, translate, scale, push/pop matrix), sketch interaction (for loops), as well as Object Oriented Programming (global/local variables, void setup and void draw). Exploring the concepts developed in class and following the tutorials on processing website the first script was created. The aim was to create a different version of a space invader pixel monster that responded when the mouse was pressed.

The general settings of the sketch - Set the size of the sketch to 400 x 400 pixels - Set the background colour to black (RGB 0) - Set the parameters of the monster icon -using fill and stroke set the colour settings -outline of the monster using the rect(); 2D Primitive. Animate the sketch so that the eyes of the monster spin -using void setup and void view structure -set the inner black squares to spin around their centres -every frame by 0.1 radians Set the sketch to be responsive -using the mousePressed () input -set the boolean to true when the eyes are spinning - every time the mouse is pressed boolean is set to false so that the eyes stop spiinning

Fig.5.2: Pixel monster sketch with spinning eyes

Fig.5.1: Space invaders monsters Fig.5.3: Processing Script pixel monster Constantina Avraamides _w1598407 [4ARC654]


Mouse position Interaction

Move Transformation

Wanting to explore the basic concepts of processing further I followed online tutorials (Shiffman, 2013) and combining the principles learned in class I created two more sketches. The first sketch is based on Daniel Shiffmans tutorial on the processing website and it is a basic version of a paint interface. There are two colour inputs and a reset function that clears all the contents. The logical sequence I followed was the following:

The third sketch is based on the packman game. I used a simple script to familiarise myself with how an object could be moved on the sketch.

The general settings of the sketch are set using the void setup input. This creates the background canvas of the interface. The void draw settings creates one of the colour inputs for the sketch. Each time the mouse is pressed on the canvas a pink circle is created on that location. Using the keyPressed input two more functions are set up. Each time the ‘s’ key is pressed the background colour is re drawn, clearing the canvas. The second function is the ‘e’ key. Each time it is pressed a white circle, of a bigger radius appears at the mouse’s position within the sketch.

Fig.5.4: Processing Script paint interface Constantina Avraamides _w1598407 [4ARC654]

Fig.5.5: Paint Interface Sketch

First the integers x and y are referenced, which will be used to move the object. Then the general settings of the sketch are set using the void set up. Only the background size is needed for this sketch. Then void draw is used to draw a simple eclipse shape, referencing packman. Finally using keyPressed() function, selected keys are identified that command how the eclipse drawn can be moved on the canvas.

Fig.5.6: Processing Script Moving Packman

Fig.5.7: Moving Packman Sketch 27

Random Function and arrays Wanting to explore basic principles further I produced a simple algorith using the random function, arrays and the if argument. The script is based on the lynda tutorial “Incorporating randomness� (Poulson, 2012). The same script is used with slight variations to produce the same sketch output (Fig.5.8). In the script in figure 5.9, an array of colours is creatted called ranibow. The general settings of the sketch are called in the void setup. A frame rate of 3 is identified in order to slow down the script. Floating integers are used for the circles dimensions, and a random colour is chosen for each one using the range of the colour array (Fig.5.9). In the script in figure 5.10, mouse interaction is added in the script, instead of using a frame count. Each time the mouse is pressed a new circle appears on the script. For the second exercise the frame rate line in the void setup is commanded off the script (Fig.5.10).

Fig.5.9: Random Circles script (Frame Rate)

Fig.5.8: Random Circles Sketch

Fig.5.10: Random Circles script (mouse interaction)

Constantina Avraamides _w1598407 [4ARC654]


6. Object Oriented Programming paradigm Using Classes, Functions and double arrays The first example is utilising the principles learned in class of classes and functions, arrays and double arrays. After altering the exercise of Object oriented programming taught in class, a similar sketch was produced as shown below. The output sketch is a display window of 400 by 400 pixels and a black backround. (Fig.6.3). Two arrays of 10 by 10 circles are created, one on top of the other. Each circle is drawn by its centre, using the ellipseMode line of code. One set of circles is black, the same colour as the background and the second set of circles is orange. Uisng the mouse Moved line of code, when the mouse is hovered over the sketch window the black circles become smaller, revealing the orange circles that are at the back. The closer the circles are to the position of the mouse the smaller they are, revealing almost completely the orange circles. In the window class, the amount of orange circles close to the position of the mouse can be changed, by changing the ‘s’ (side) variable. (Fig.6.4).

Fig.6.3: Double Array Sketch - Side distance variable 1

Fig.6.2: Double Array Class Script

Fig.6.4: Double Array Sketch - Side distance variable 2

Fig.6.1: Double Array Script

Constantina Avraamides _w1598407 [4ARC654]


Using Classes, Functions and arrays The second example is utilising functions and classes and it is based on the script posted in the processing forum (Amnon.owed, 2014). The final output of this script is a display window of 1600 by 800 pixels, with a pastel yellow background. The display window is filled with cirles of random radius and three different hues of red. When the mouse is hovered over the display window the red circles change to shades of grey, depending on their distance with the mouse position, the closer they are the grey hue is lighter and if they are furthest away the circles are almost black (Fig.6.5).

Fig.6.5: Red and Black circle function sketch Constantina Avraamides _w1598407 [4ARC654]

Fig.6.6: Red and Black circle function script 30

3D Object (P3D) For the third exercise I created a 3D cube, based on the “Learn programming 63: Time for our first 3D animation” online video. (Pazos, 2011). The final output of this script is a display window of 800 by 800 pixels, with alight blue background. A purple 3d cube is created when the mouse is hovered over the display window. By changing the variable r, the cube rotates faster or slower (Fig.6.8).

Fig.6.7: Basic 3D cube script

Fig.6.8: Basic 3D cube sketch

Constantina Avraamides _w1598407 [4ARC654]


7. Platform communication Processing into Grasshopper 1 In this week’s exercise, communication between platforms was introduced using OSC (Open Sound Control). Two new libraries were introduced to allow Processing and Grasshopper to communicate. The .oscP5 library was added to Processing and the GHowl plugin was added to Grasshopper. The first exercise (Fig. 7.1) utilises the oscP5 library to send data of the sketch developed in processing into Grasshopper. The script is based on the post “Processing to Grasshopper real-time communication” posted on the grasshopper forum (Adiavastos, 2012). The output of the Processing script is a window with dimensions 800 by 800 pixels and a light yellow background. An array of dark green circles is drawn on the background and two red lines, representing the grid used in Grasshopper. Each time a key on the keyboard is pressed a new random array is created. (Fig. 7.2) To transfer Processing data into grasshopper the following script is created (Fig.7.3) utilising the GHowl component. Firstly, the oscP5 library in Processing is linked to grasshopper using the UDP compnonent. Using the same identity location of the port in both, in this case the port identified is ‘6881’, the two software can communicate. The string of data is then split into X,Y and Z coordinates so that they can be read by rhino, using the split text xomponent. Linking the ouptut of the split text component to a point parameter generates the points in rhino. Finally a circle and a planar surface component are linked to the points, creating circular surfaces around the points so that its easier to see when the array pattern changes. (Fig.7.4). When the Processing sketch and the Grasshopper script window are running the array of circles is changing pattern every time a key is pressed in both windows. (Fig. 7.5).

Fig.7.1: Processing to grasshopper_ OSC script Constantina Avraamides _w1598407 [4ARC654]

Fig.7.2: Processing to grasshopper_ OSC sketch 32

Fig.7.3: Processing to grasshopper_ OSC grasshopper script

Fig.7.4: Processing to grasshopper_ OSC, Rhino window Constantina Avraamides _w1598407 [4ARC654]

Fig.7.5: Processing to grasshopper_ OSC, platform communication 33

Processing into Grasshopper 2 The second exercise uses the .oscP5 library to send data into Grasshopper of a single array Processing sketch developed class, made utilising classes principles (Fig. 7.7, Fig. 7.8). The output of the sketch is a grey window with dimensions 500 by 500 pixels. A single array, named ‘Box’ is created, containing 30 squares of different sizes, with random pink and purple colours. In the ‘Box’ class the function of the squares are declared under the void draw script. The squares move randomly in the window bouncing off the window walls, using a negative velocity script. (Fig. 7.6) In order to import data into Grasshopper, lines of script are added in the main tab of the processing window. The additional lines are highlighted below in figure 7.9.

Fig.7.7: Single Array Processing script

Fig.7.6: Single Array Processing sketch Constantina Avraamides _w1598407 [4ARC654]

Fig.7.8: Single Array Processing script, Box class

Fig.7.9: Single Array Processing to Grasshopper script 34

Processing data are imported into grasshopper using following script (Fig.7.11). The same port location is indicated in both grasshopper and processing scripts, in this example the port location is ‘12003’. The ouput of the UDP component is a string of data with points for the rectangle coordinates and colours. Using a text split component with an index of 1, the first line of the text is removed (Step 1). Then the X and Y coordinates of the centre of the rectangles are the first and second lines of text. They are extracted using a cull pattern component and are then used for reconstructing the points in rhino, using the construct point component (Step 2). Another cull pattern component with a F,F,T,F,F pattern is used to extract the side value of the rectangles. Rectangles are then redrawn in rhino using a rectangle component. A positive and a negative value of the rectangle sides are linked into a domain component that becomes the input for the X and Y value of the rectangle component (Step3 ). The three last numbers on each line of text are used to redraw the colours of the rectangles, using an RGB colour component (Step 4). Surfaces are generated on each square using a boundary surface component. Using a preview component, the colour of the surfaces are recreated in rhino (Step 5).

Step 6 Step 3

Step 1 Step 2

Step 5

Step 4

Fig.7.11: Single Array Processing to Grasshopper, Grasshopper script

Finally the imported data are manipulated furher into grasshopper, creating an animated mesh (Fig. 7.10). A Delaunay mesh component is linked to the reconstructed points in rhino, which is then linked to a mesh edges component (Step 6).

Fig.7.10: Animated mesh in grasshopper created from processing data Constantina Avraamides _w1598407 [4ARC654]

Fig.7.12: Single Array Processing to Grasshopper platform communication. 35

Grasshopper into Processing The third exxercise aims to send data from Grasshopper into Processing (Fig. 7.13). The double array sketch developed in the previous chapter (Fig. 6.1, Fig. 6.2) is utilised in this exercise. The output of the processing script is an interactive sketch with orange circles on a black background. Hovering the mouse over the sketch window reveals orange circles with that have diffrent apertures. Depending on the distance of the mouse, each circle has a different apperture. Additional lines of code are added in the main processing tab, which are highlighted in the figure below (Fig. 7.15). An import .oscP5 line of code is added at the top, allowing communication between the two software. Using the following grasshopper script (Fig. 7.14) the interactive process of the processing sketch, which is movement of the mouse is controled using the grasshopper components (Fig.7.16). An MD slider component with sides 400 by 400 is created, represententing the processing sketch window. A negative component is used to map the Y coordindinate of the rectangle to match the reverse position of the Y coordinated in processing.

Fig.7.13: Double Array Processing to Grasshopper platform communication

Negative y coordinate

Negative y coordinate

Fig.7.14: Double Array Processing to Grasshopper, Grasshopper script Constantina Avraamides _w1598407 [4ARC654]

Fig.7.15: Double Array Processing to Grasshopper, Processing script 36

Fig.7.16: Double Array Processing to Grasshopper, skech Constantina Avraamides _w1598407 [4ARC654]


8. NURBS, Parameter Space and Recursion Fractals “A fractal is a never ending pattern that repeats itself at different scales. This property is called ‘Self-Similarity’ “(Fractal Foundation, 2009, pg. 3). Fractals are very simple to produce. They can be made by repeating an identical process again and again, creating extremely complex patterns. Fractals can even be infinetely complex, meaning one can zoom in the pattern and find the same shapes forever.

Mathematical fractals include the geometric Serpinski Triangle ( Fig. 8.4) and the algebraic Mandelbrot Set (Fig 8. 5). Architectural examples include the famous Orient Station by Calatrava, completed in 1998 in Lisbon (Fig. 8.6) and the most recent Chhatrapati Shivaji International Airport, by SOM in India (Fig. 8.7).

Fractals are found everywhere in nature, mathematics and architecture, spaning over a range of scales. Natural fractals (Fig. 8.1, 8.2) include branching networks like trees, river networks, lightings and blood vessels and spirals patterns like seashells and hurricanes.

Fig. 8.6: Orient Station, Lisbon by Calatrava

Fig. 8.4: Serpinski triangle

Fig. 8.1: Natural Branching Fractal, River Network Canada

Fig. 8.7: Chhatrapati Shivaji International Airport, SOM

Fig. 8.2: Natural Spiriling Fractal Seashell

Fig. 8.3: Natural Spiriling Fractal Seashell

Constantina Avraamides _w1598407 [4ARC654]

Fig. 8.5: Mandelbrot Set 38

Creating a Fractal Tree

Creating the Koch Curve


“The simplest way of producing a fractal is is to build a shape by applying the same process over smaller and smaller scales. This idea can be realized with a process called initiators and generators.” (MathYale, ND)

The Koch curve is a series of connected lines, discovered in 1904 by Swedish mathematician Helge von Koch. It can be drawn in a very simple manner using the steps shown below. (Fig. 8.9 )

Recursion is used in mathematics and computer science, as a function that is being applied within its own definition.

The initiator is the starting shape and the generator, a collection of scaled copies of the initiator. The example follows one simple rule: each copy of the initiator replaces the generator, with a scaled copy of the generator, while specifying orientations where necessary. One example that uses Initiator and Generator to produce a fractal pattern is the L-system. L- system fractals, called Kolam in Tamil, were developed in India as a method of decoration, thousands of years ago.

1. Start with a line

In 1883, German mathematician George Cantor developed three simple rules to generate an infinite se as shown below (Fig. 8. 11), called the cantor set.

2. Divide the line into three equal parts.

Step 1: Start with a line Step 2: Divide the line in three segments Step 3: Erase the middle segment Step 4: Repeat steps 2 and three again and again.

“L-systems are a formal string rewriting systems introduced in 1968 by the botanist Aristid Lindenmayer to model the growth of plants” (MathYale, ND).

3. Draw an equilteral triangle using the middle segment as its base. 4. Erase the base of the equilateral triangle. 5. Repeat steps 2 through 4 for the remaining lines. Fig. 8.9: Koch curve diagram

Fig. 8.11: Cantor Set

Fig. 8.10: Koch curve

Fig. 8.8: L-System Fractals Constantina Avraamides _w1598407 [4ARC654]


Fractal Tree - Mouse controlled Following the principles developed in class a scipt of a fractal tree was created for this exercise. The final output is a sketch of 900 by 800 pixels dimensions and a blue background. A light grey branch of a tree is added into the sketch each time the mouse is clicked. Each line is scaled down by 0.7 and the two branches are rotated by different amounts, in an attempt to create a fractal tree that looks like a flower (Fig. 8.13).

Fig. 8.12: Fractal tree script Constantina Avraamides _w1598407 [4ARC654]

Fig. 8.13:Fractal tree sketch progression over time 40

Recursion Circles - Animation Using recursion principles a second script in processing was created based on the “Recursive Tree� script published on (Gwenn, 2016). The Final output is a sketch with dimensions 900 by 900 pixels and a black background. Bright pink circles are drawn onto the background, which are rotated around the centre of the sketch. A recursion is added to their size and their spread on the sketch, so that the circles become smalere every time their are rotated until they reach a certain size and they are then rotated on the opposite direction. (Fig. 8.15)

Fig. 8.14: Recursive Circles Script

Fig. 8.15: Recursive Circles Sketch animation Constantina Avraamides _w1598407 [4ARC654]


NURBS curves NURBS, Non-Uniform Rational B-Splines, are mathematical representations of 3‑D geometry that can accurately describe any shape from a simple 2‑D line, circle, arc, or curve to the most complex 3‑D organic free-form surface or solid. Because of their flexibility and accuracy, NURBS models can be used in any process from illustration and animation to manufacturing.

Curve Continuity NURBS curves can be drawn in grasshopper using the components already built in. (Fig. 8.17) First a collection of points are drawn, either in rhino or using th construct point component in grasshopper. Then the curve component is used to construct a NURBS curve. A varying degree parameter results to a different extrapolation of the curve (Fig. 8.18).

Curve continuity is used to describe how two curves meet. There are four curvature definitions, described below (Fig. 8.19). G0: If the end points of each curve are in the same location in space, the curves are position continuous (G0), touching at their end points. G1: The two curves touch, and go in the same direction at the point where they touch. The direction is determined by the first and second point on each curve. If these two points fall on a line, the two curves are tangent at the ends.

NURBS is a generalization of Bézier curve. The figure below (Fig. 8.16) shows of a simple Bézier curve (C), its control points (1),(2),(3),(4) and its control polygon (P).

G2: Measures position, direction, and radius of curvature at the end points.The curves go in the same direction when they meet,and have the same radius at that point. Fig. 8.17: NURBS curve script

G3: adds a third requirement, planar acceleration. Curves that are G3 continuous touch, go the same direction, have the same radius, and that radius is accelerating at the same rate at a certain point.

Fig. 8.16: Bézier curve Curve degree : 1

Similarly, NURBS curves are defined by four things: degree, control points, knots, and an evaluation rule. Degree: A positive whole number NURBS lines and polylines are usually degree 1, NURBS circles are degree 2, and most free‑form curves are degree 3 or 5.The order of the curve equals to the degree+1 value. Control Points: a list of at least degree+1 points Moving the control points of a NURBS curve changes its shape.

Curve degree : 2

Fig. 8.19: Curvature continuity

Knots: number of control points + the curve order Determines the smoothness of the curve. Evaluation Rule: a mathematical formula The evaluation rule takes a number and assigns a point. The formula involves the degree, control points, and knots.

Curve degree : 4

Fig. 8.18: NURBS curves varying degree Constantina Avraamides _w1598407 [4ARC654]


Uses in Architecture NURBS curves and surfaces are widely used in architecture in recent years beacuse they allow forms to be created freely, without the restriction of right angles. Two examples of how the mathematic principles of NURBS are used to generate the form of buildings are the Selfridges building in Birmingham (Fig. 8.20) and the new building of the Soumaya museum in Mexico City (Fig. 8.21) .

The Selfridges building in Birmingham is part of the Bullring shopping centre that was completed in 2003. The building was designed by the Architecture firm Future Systems with a steel framework and the curved facade is made from sprayed concrete (Fig.8.22). The new building of the Soumaya museum was completed in 2011 by the architecture firm FR-EE of Fernando Romero Enterprise. It is a 46m high private museum with a facade covered in 16,000 hexagonal aluminum tiles (Fig. 8.23).

Fig. 8.24: 3D printed vases Fig. 8.20: Bullring Shopping Centre, Birmingham by Future Systems, 2003

Fig. 8.22: Bullring Shopping Centre facade

Fig. 8.23: Soumaya Museum facade

Other application of NURBS curves and surfaces include product design. The invention of the 3D printer has enabled designers to produce objects of various scales that can be cheapiy produced. NURBS principles are essential for 3D printing as they produce smooth surfaces joined together without any connection lines. The 3D printed vases below (Fig. 8.24) are vase silhouettes that can be be screwed onto a bottle like a cap. They were designed by Design Libero to combine upcycling and 3D printing technology. Mamou Mani Architects have designed a 3D printed Stool (Fig. 8.25) using the Silkworm plugin in Grasshopper that were used in Food Ink. Food Ink was a temporary restaurant that first opened in Venlo, Netherlands in Aprl 2016 as the World’s First 3D Printing Restaurant. Fig. 8.21: Soumaya Mouseum, Mexico City by FR-EE Fernando Romero Enterprise, 2011 Constantina Avraamides _w1598407 [4ARC654]

Fig. 8.25 3D printed Stool, Mamou Mani Architects 43

NURBS surface NURBS surfaces are rectangular grids of (u) and (v) curves that go in two directions. The shape of a NURBS surface is defined by the number of control points and the degree of the that surface in the u and v direction. NURBS surfaces are reparameterized so that the (u) and (v) domains range between 0 and 1, for easy evaluation and manipulation. 4 For this exercise a NURBS surface is created in grasshopper and controlled using NURBS curves parameters (Fig.8.20). First, three dimensional NURBS curves are generated using random control points. Using the loft component the curves are joined together to form a surface. The surface can then be divided using the divide curve component into a (u,v) grid. Changing the (u) and (v) parameters changes the subdivisions of the surface (Fig.8.21). Moving the control points changes shape of the curve (Fig.8.22). Fig. 8.21: NURBS Surface diagram

Fig. 8.20: NURBS Surface script

Constantina Avraamides _w1598407 [4ARC654]

Fig. 8.22: NURBS Surface manipulation


Surface Morph This exercise follows the online tutorial “Surface Box SBox Bounding Box BBox Morph to Generate Morphed Geometry� (Paramarch, 2016). For this exercise a base component is generated using NURBS curves, and it is morphed on a NURBS surface. The first step is to create the base component. A simple polygon is generated using the polygon component, which can be changed parametrically by changing the segment parameter. The hexagonal component is made into a 3D geometry using the pipe function of grasshopper (Fig.8. 23).

Step 2

Step 1

Step 3

Step 5

Step 4

Fig. 8.23: Base NURBS component script

Fig. 8.25: Morphing script

Then a target surface is created for the base component to be mapped on. Another polygon component is used to generate the base curve of the surface. The polygon curve is offset and the two curves are lofted together creating a base surface. Using a divide surface component a UV grid is generated along the surface. This grid will be used to map the hexagonal component on. Then a reference box is created around the hexagonal component using the bounding box component. (Fig. 8.24) A brep component is linked to the pipe component making it into a 3D base geometry. A surface box component is used to generate a grid of boxed on the target surface. The divide the surface output is the domain input, allowing manipulation of the final output. Finally the morph component is used to reference the base hexagonal geometry onto the target surface (Fig. 8.25).

Step 3

Step 4

Step 5

Fig. 8.26: Morphing on a surface diagram

Step 1

Step 2

Fig. 8.24: Base hexagonal component and bounding box Constantina Avraamides _w1598407 [4ARC654]


[ Part 2 ]

STUDIO WORK Part 2 serves as documentation of how principles and tools used and developed in Part 1 are then applied on indivual studio work. This section is divided in two chapters based on the studio briefs 1 and 2 of Semester 1.

9. BRIEF 1: PARTICLE SIMULATION & hydrological prototype DS18 Studio Intro

Brief 1 - Aims

This year DS18 is part of the research agenda of Monsoon Assemblages, a five-year research project funded by the European Research Council. Based on the Indian city of Chennai, DS18 is focused on a series of small exploration projects in Semester 1, which lead to the development of an individual brief and a design proposal in Semester 2.

This brief is aimed to enable us, the students, to begin to understand and work with the complex and architecturally fertile phenomenon of monsoon rain. This is enabled by testing how shapes, surfaces and materials might impact the performance of monsoon rain and the local context. Brief 1 is also designed to introduce some of the key computational tools that are promoted within DS18, such as Rhino, Grasshopper, RealFlow and rapid prototyping.

During Semester 1 we were asked to develop an understanding of the Monsoon, by simulating Monsoon rain and its interactions with shapes, surfaces and materials, using specialised software including Rhino, Grasshopper and Grasshopper plug-ins, Realflow and sketch models. Divided into groups we then developed base maps of the chosen sites in Chennai and its subterranean layers, using computational techniques. During Semester 2, the focus of the design studio is on the development of an architectural urban strategy leveraging the principles explored in Semester 1. The goal is to transform our chosen site into a system, in which the architectural proposal integrates the socio-political, cultural, geological, hydrological and meteorological elements and processes.

Digital Simulation 07 Frame: 080

HYBRIDO_Domain Particles : 201,130 Cell: 0.5 (m) Container: 20 x 20 x 20 Daemon Gravity: 9.8 Density: 2000 Viscocity: 0.10

The outcome of this brief includes an investigation of the properties of rain and processes, and a rapid prototyped model of the shape of the rain with strong spatial qualities. Cohesion of water molecules is explored, using RealFlow a fluid and dynamics simulation tool. A series of digital experiments is carried out to test how water particles react with other water particles under different conditions. The experiments illustrate the distance between particles as a means of showing the cohesion forces between water molecules in different conditions. Then the experiments are translated into a physical model and the data of the simulations are analysed further.

Digital Simulation_7 Parameters

Polygon Size: 0.50 Particle Radius: 0.35 Digital Simulation 07 Frame: 100

Digital Experiments

Emitter 1 Speed: 10 Daemon Noise: 0.8 Angle variation: 2 Speed variation 2 Emitter 2 Speed: 5 Daemon Noise: 1.5 Angle variation: 0 Speed variation 0

A series of digital simulations is carried out in RealFlow, indicating conditions of the liquid, such as the amount of water particles and speed. External parameters are indicated such as, an enclosure box where water is poured into, and forces that pull and drag the water particles. (Fig. 9.3 - 9.6)

Digital Simulation 07 Frame: 140

Fig. 9.1: Monsoon Assemblages Constantina Avraamides _w1598407 [4ARC654]

Fig. 9.2: Digital Simulation Water Particles

Fig. 9.3: Digital Simulation 07 48

Digital Simulation 10 Frame: 100

Digital Simulation 10 Frame: 132

Digital Simulation_10 Parameters

Digital Simulation 11 Frame: 150

Digital Simulation_11 Parameters

Digital Simulation 13 Frame: 105

HYBRIDO_Domain Particles : 201,130 Cell: 0.5 (m)

HYBRIDO_Domain Particles : 201,130 Cell: 0.5 (m)

HYBRIDO_Domain Particles : 201,130 Cell: 0.5 (m)

Container: 20 x 20 x 20 Density: 2000 Viscocity: 0.05

Container: 20 x 20 x 20 Density: 2000 Viscocity: 0.05

Container: 20 x 20 x 20 Density: 2000 Viscocity: 0.20

Polygon Size: 0.50 Particle Radius: 0.35

Polygon Size: 0.50 Particle Radius: 0.35

Polygon Size: 0.50 Particle Radius: 0.35

Daemon Gravity: 9.8 Daemon Attractor: 6

Daemon Gravity: 9.8 Daemon Noise: 1

Daemon Gravity: 9.8 Daemon Noise: 3 Daemon Attractor: 6

Emitter 1 Speed: 10 Angle variation: 2 Speed variation 2

Digital Simulation 11 Frame: 170

Emitter 2 Speed: 5 Angle variation: 0 Speed variation 0

Emitter 1 Speed: 10 Angle variation: 2 Speed variation 2

Digital Simulation 13 Frame: 165

Emitter 1 Speed: 10 Angle variation: 2 Speed variation 2

Emitter 2 Speed: 5 Angle variation: 0 Speed variation 0

Emitter 2 Speed: 5 Angle variation: 0 Speed variation 0

Digital Simulation 10 Frame: 195

Digital Simulation 11 Frame: 200

Digital Simulation 13 Frame: 200

Fig. 9.4: Digital Simulation 10

Fig. 9.5: Digital Simulation 11

Fig. 9.6: Digital Simulation 11

Constantina Avraamides _w1598407 [4ARC654]

Digital Simulation_13 Parameters


Importing Simulations to Rhino Each digital simulation has an output of a video animation showing particles moving and interacting with each other and any external forces, accompanied by a number of excel files. Each excel file contains information about the the exact location of the water particles within the model space, documented as coordinate points. Due to the high number of digital explorations explained above, Digital Simulation 07 is chosen to be explored further.

By importing the particle location data files (Fig. 9.7 , 9.8) into grasshopper, the exact location of the water particles can be used to redraw the particles as points in rhino. Having the points imported in rhino is necessary for (a) analysing data produced by the digital simulations and for (b) creating a rapid prototype of the shape of the rain.

Digital Simulation 07 has two different sources of water particles. A different excel file is automatically created for each source of particles, for each single frame. For this simulation 200 different excel files were created, each one containing about about 12500 lines of data. Due to the high amount of data only 3 out of the 200 different frames were chosen in order to compare the location and interaction between the particles of each source.

Fig. 9.9: Particles Source A

Fig. 9.10: Particles Source A & B

Fig. 9.7: Particle data for Source A, Digital Simulation 07, Frame 100

Fig. 9.8: Particle data for Source B, Digital Simulation 07, Frame 100 Constantina Avraamides _w1598407 [4ARC654]


Data Management and struture principles, introduced in the first two weeks of the Digital Representation module are applied in this exercise. Step 1: First the Excel files are converted into .csv format files, which are readible by grasshopper. A read file component is used to import the data into grasshopper. The data is then organised and reduced using a series of steps shown below (Fig. 9.11).

Step 1

Step 2

Step 2: A cull index component is used to remove the first line of data which is nor necessary as it is the title row. Step 3: A string split component is used to separte each line of data into its own list. Step 4: Using a cull pattern component with a pattern of F,T,T,T,F,F,F,F,F,F Step 5: The resulting list containts the coordinates of each point produced.

Step 3

Step 4

Step 6: Then each list needs to be deconstructed into a single point, using another cull pattern component. Step 7: Finally a construct point is used to connect the X, Y and Z coordinates of the points. By baking the points, a single frame of the simulation produced in RealFlow is imported into Grasshopper (Fig. 9.9) . This process is repeated for the second source of particles and two sets of points are generated. (Fig. 9.10)

Step 5

Step 6

Step 7

Fig. 9.11: Importing particle data into Grasshopper script Constantina Avraamides _w1598407 [4ARC654]


Analysing Data - Closest Point Now that the particle points are imported into rhino the relationshiop between the two sets of particles emitted from different sources can be examined in various ways. In the following two exercises the results of the digital simulations are analysed, illustrating the cohesive forces between the water particles. The first exercise is an attempt to map and illustrate the cohesive forces between the water particles emitted by connecting points that are close to eah other with lines. A highest concentration of lines indicates a higher cohesive force between particles. Data and list management principles are used in the grasshopper script below (Fig. 9.12). Step 1: Each set of points generated using the script above (Fig. 9.11) is connected to a cull pattern component. A True-False pattern is used to reduce the number of points to half in order to increase the speed of the solution.

Step 2: As the two lists have a different number of items, a short list component is used to match the length of both lists to the length of the shortest one. Step 3: A point component is linked to the ouptut of each list making the lists into collections of points. A closest point component is then connected to a line component creating lines between the particles that are closest together. The second set of points is grafted, creating a separate list for each point so that the closest point component can compare each one of them individually to the collection of points of the first list. This results to the points of each emitting source to be compared. Step 4: A proximity 3D component is linked to each collection of points, illustrating the cohesive forces btween the particles of each emitter source, individually. A minimum and a maximum radius is set using the number slider, indicating the radius of the 3D sphere of points to be compared.

Step 5: A pipe component is then linked to each procimity 3D component making the 2D lines into 3D geometries that are more visible. Step 6: The movement of the particles can be illustrated by creating a polyline through all of the points of each particle emitter source. An interpolate cirve component is linkied to each collection of points. Curves are created through all of the points. However they do not show a clear path of the particles and therefore another step is necessary. Step 7: A divide curve component is used creating a number of points on each interpolated curve. A polyline is then used to link the points of the two interpolated curves together, in an attempt to illustrate the particles position within model space, for this specific frame of the simulation.

Step 4

Step 5 Step 1

Step 3 Step 2

Step 7 Step 6

Fig. 9.12: Mapping the closest points Grasshopper script

Constantina Avraamides _w1598407 [4ARC654]


Fig. 9.13: Closest points between particles of different emitters (Step 3)

Constantina Avraamides _w1598407 [4ARC654]

Fig. 9.14: Closest points between particles of the same emitter (Step 4)

Fig. 9.15: Rendered view of model (Step 5)


Fig. 9.16: Movement of particles (Step 6)

Constantina Avraamides _w1598407 [4ARC654]

Fig. 9.17: Movement of particles simplified (Step 7)

Fig. 9.18: Steps 3, 4 and 7 combined


The result of this exercise is only half correct. A clear visual is given of where stronger cohesive forces exist between the particles. However, not all particles are linked with a line to their closest neighbour, as a single particle is the closest one for a number of neighbouring particles. Therefore, a second exercise follows below as an attempt to visualize cohesion between all particles of the model space. Finally, the movement of particles cannot be illustrated clearly only by using a single frame of the simulation, as attempted in steps 6 and 7.

Fig. 9.19: Mapping the cohesion of particles Digital Simulation 06, Frame 100 Elevation view

Constantina Avraamides _w1598407 [4ARC654]

Fig. 9.20: Mapping the cohesion of particles Digital Simulation 06, Frame 100 Plan view


Analysing Data - Shortest Distance The second exercise is an attempt to illustrate the cohesive forces between the water particles emitted by the two sources, more clearly, by connecting the respective particles of each source and adding a colour gradient between the shortest and longest distance of the lines. Steps 1 and 2 are the same as the exercise above. Step 3: The respective distances between the points of each list are calcullated using a calculate distance component. A new list of distances is generated.

Step 4: a sort list component is used to sort the list into ascending order. From this we can extract the minimun and maximum values of the distances. The shortest distance value is extracted by using the list item component with an index of 0. The longest distance value is extracted using a list length item component. 1 unit is subtracted by the output of the list item component, resulting to the index of the last item of the distances list. Step 5: Lines are created between each respective point of the two different emitter sources, using a line component.

Step 6: The geometries generated above can be colourcoded according to their length, using a gradient component. The shortest distance value extracted above is plugged into the minimum input of the gradient component and the longest distance value to the maximum input. The unsorted list of distance values is linked to the ‘t’ input. Step 7: Finally the ouptuts of the gradient and the line components are plugged into a preview component. Shorter lines indicating that the particles are closer to each other, thus having stronger cohesive forces are colourcoded red, while lines with longer distance values and weaker cohesive forces are colourcoded blue.

Step 2 Step 1

Step 5

Step 7 Step 3

Step 4

Step 6

Fig. 9.21: Mapping the distances of particles grasshopper script

Constantina Avraamides _w1598407 [4ARC654]


The outcome of this exercise gives a more clear image of the cohesive forces of attraction. Stronger cohesive fores exist between the particles that are closest to one another, illustrated with the red coloured lines. However, the two sources emit water particles at a different speed, therefore the lines created can seem a bit random. The same exercise can be repeated for different simulations in order to compare the findings of each particle simulation.

Fig. 9.22: Lines between particles of different emitter sources (Step 5)

Constantina Avraamides _w1598407 [4ARC654]

Fig. 9.23: Colourcoded lines between particles of different emmitter sources (Step 7)

Fig. 9.24: Colourcoded lines between particles of different emmitter sources, plan view


Rapid Prototype One of the outcomes of brief 1 was to create a rapid prototype model of the shape of the rain with strong spatial qualities. Using the Digital Simulations illustrated above, single objects can directly be exported from Realflow into Rhino and manipulated further. For this exercises, two different simulations are explored futher, Digital Simulation 06 and 08.

Digital Simulation_06 Frame 60

Digital Simulation_06 Frame 80

Digital Simulation_06 Frame 100

Welded mesh Offset: 0.35

Welded mesh Offset: 0.60

For each Simulation, a mesh can be exported in .obj format for each frame of the simulation. For Digital Simulation 06, frames 60, 80 and 100 are imported into Rhino. (Fig. 9. 13) They are superimposed on each other, in order to create a prototype that illustrates the time of the simulation. With frame, cohesion forces between the molecules change constantly, changing and deforming the stream of water. In order to create a model that can be rapidly produced with 3D printing, the meshes are further manipulated in Grasshopper, using the Weaverbird Plugin (Fig. 9.12). Moving the slider towards the value of 1 deforms the prototype further, causing it to loose its original properties (Fig. 9.14). A thicker mesh is produced that can be 3D printed without any risks. The same process is repeated for Digital Simulation 08, using frames 100, 120 and 140 (Fig. 9.15, 9.16). The 3D printed models below (Fig. 9.17, 9.18) are the final outcome of this brief.

Fig. 9.13: Digital Simulation 06 Frames Welded mesh Offset: 0.00

Fig. 9.12: Offseting the mesh script

Fig. 9.14: Digital Simulation 06 mesh manipulation Constantina Avraamides _w1598407 [4ARC654]


Digital Simulation_08 Frame 100

Digital Simulation_08 Frame 120

Digital Simulation_08 Frame 140

Welded mesh Offset: 0.35

Welded mesh Offset: 0.60

Fig. 9.15: Digital Simulation 08 - Frames Welded mesh Offset: 0.00

Fig. 9.16: Digital Simulation 08 - mesh manipulation Constantina Avraamides _w1598407 [4ARC654]


Physical Models

Fig. 9.17: Digital Simulation 06 3D Printed Model

Constantina Avraamides _w1598407 [4ARC654]


Fig. 9.18: Digital Simulation 08 3D Printed Model

Constantina Avraamides _w1598407 [4ARC654]


10. BRIEF 2: Mapping the Pallikaranai Transect Brief 2 - Aims

Chennai, India

Zone 5: Neelangarai

The aim of the second brief is to carry out extensive research and produce base maps of a selected site, in Chennai India. Brief 2 aims to introduce mapping and ethnographic techniques, however, in this chapter only mapping techniques are explored. The selected site is Zone 5 that spans form the Buckingham Canal to Neelangarai beach on the coast of Bengal Bay, in Chennai. Base maps of this zone were prepared in groups using Rhino, Grasshopper, Elk and Open Street Map.

Chennai, formerly called Madras, is the capital city of Tamil Nadu state in South India. Originally Chennai was a cluster of villages, located along paddy fields. All the popular dynasties of South India, have had an influence over the city, however the metropolitan city started in 1639, when the East India Company started a factory-trading post.

Neelangarai is a locality in the south of Chennai. It is situated in Kancheepuram district in the Indian state of Tamil Nadu about seven kilometers south of Adyar river. Neelankarai is located with Palavakkam in the North, Vettuvankeni in the South and the Bay of Bengal in the East.

Fig.10.1: Madras Map, 1893 Constantina Avraamides _w1598407 [4ARC654]

A settlement was built to serve as the control centre and it was completed on 23 Apr’ 1640, St George’s Day and was named as St George’s Fort. The native town, officially called George Town, was established outside the walls of the Fort and had several crowded lanes and each lane dealt in special trade, serving the British colonists. The Colonial command made connections with the villages, together with the settlement at San Thome that was established by the Portuguese in the 16th century. During the British rule, Chennai went under drastic changes, to become a prominent city, with strong naval base, with the introduction of railways in the late 19th century.

The name of Neelankarai Neelam + Karai can be directly translated to Blue Shore. It has been developed rapidly over the last 10 years and has made a significant name for itself in popularity for amongst tourists. In the 2001 census, Neelangkarai had a population of 15,688 and an average literacy rate of 70% that is higher than the national average. Neelankarai consists of high end residential areas as well as traditional fishing villages. In the following exercise a base map is created, highlighting the building typologies and morphological features that exist in the zone.

Fig.10.2: Chinna Neelangarai Kuppam Fishing Village, 2016 62

Basemap In the first exercise the basemap of the site is created, in a group of 4, using elk plugin for Grasshopper (Fig. 10.4). First Open Street Map (Fig. 10.3) is used to export a map of Zone 5 into .osm format and the rhino file is set to metres to match the open street map file units. Using a file path parameter the .osm file is then imported into grasshopper. The file path parameter is linked into the main elk component, called the location component, so that the data can be extracted. Different componens can be used to extract different data. In this exercise the water and the minor road components are used to extract the water bodies of the area, and any existing minor roads. A panel component with the word ‘building’ is plugged onto the feature key input of the generic OSM component to extract building coordinates. A polyline component is then linked to the ouput of each component, creating a base map with street, buildings and water bodies oulines. The generic OSM component is also used to extract data for specific type of buildings and specific land use types, as seen in the script opposite. Data is extracted as points (Fig. 10.6). A polyline component is then connected to the ouput of each elk component creating the base map in grasshopper (Fig. 10.7). A preview component is finally plugged to the output of each polyline component, with a different colour swatch connected to each one, colourcoding the base map (Fig. 10.8).

Fig.10.3: OpenStreetMap Constantina Avraamides _w1598407 [4ARC654]

Fig.10.4: Extract data form .osm using elk plugin, grasshopper script 63

Fig.10.5: Extract data form .hgt using elk plugin, grasshopper script

Fig.10.6: Extracted points Constantina Avraamides _w1598407 [4ARC654]

Fig.10.7: Zone 5 Map with buildlings, streets and land uses

Fig.10.7: Colourcoded Zone 5 Map with buildlings streets and land uses 64

An additional alyer of site topography is added to the map using the grasshopper script above. Site topography is downloaded in an .hgt format which is then plugged into the sTopo component using another file path parameter. Contours are then extracted using the grasshopper script above for every 250mm and are colourcoded using the gradient component. The map is then baked in Rhino and taken into Illustrator where the graphics of the map are adjusted (Fig. 10.13, 10.14)

Fig.10.9: Colourcoded contour mapping Constantina Avraamides _w1598407 [4ARC654]

Fig.10.10: Zone 5 Basemap 65

Mapping Building Typologies In the previous exercise the base map is created. In this exercise additional information about the site is added on the map. After extensive research on the site a variety of building typologies and morphologies are identified. The building typologies mapped include religious, educational and medical buildings, local businesses such as mobile phone shops, general stores, garages, retail stores and food establishments, and infrastructure such as banks, petrol stations and transport links. The different types of roof buildings are also mapped including three types of pitched roofs, tiled, steel and felt, and two types of flat roofs, including concrete and steel. A simple process is followed to map each different building and roof type mentioned above. First the lattitude and longitude of each building is obtained using their reference on google. A list of each building types is then collated in an excel file that is then referenced into grasshopper (Fig. 10.11) .

The first item of the list that is the title row is removed, using a split list component with an index of 1. A text split component is then linked to the list B output of the split list component. Typing a comma ‘c’ in a panel and attavhing it on the separator input of the text split component, a separate list is created for each referenced building type. Two list item components are then used to extract the longitute and lattitude of each building. Using an index of 1 extracts the lattitude and using an index of 0 the longitute of each building type. A construct point component is used to generate a points representing each building. Finally a polygon component is attached to the construct point component. A different type of polygon is generated for each building type creating a simple key to visualise the different typologies and roof types of the zones (Fig. 10.12). Fig.10.11: Building Roof type data files

Fig.10.12: Mapping Building types Grasshopper Script Constantina Avraamides _w1598407 [4ARC654]


Fig.10.13: Zone 5 Map Building typologies Constantina Avraamides _w1598407 [4ARC654]

Fig.10.14: Zone 5 Map Roof Types 67

[ Appendices ]

ADDITIONAL EXERCISES The following section includes additional explorations in Processing. Processing is often used as a tool for data visualisation. The following exercises are the initial attempt to develop necessary skills before appling data visualisation principles on further studio work.

11. DATA VISUALIZATION USING PROCESSING Further explorations Processing is commonly used for data visualization. DS18 is a studio that bases design work on data findings, therefore before any design work is developed data findings is analysed and presented. Before applying any knowledge on the studio work I did simple exercises based on the Lynda tutorial Interactive Data Visualization with Processing by Barton Poulson, released on 25 September 2012. Tor the first two exercises, different types of curves are explored using simple points, stated within the script. In the first exercise (Fig.11.1, Fig.11.3) three curves are drawn using the same points, but with different curveTightness index number. In the second exercise (Fig.11.2, Fig.11.4) two bezier curves are drawn using different control points, resulting to different shapes.

Fig. 11.4: Bezier curves script Fig. 11.1: Complex curves sketch

Fig.11.2: Bezier curves sketch Constantina Avraamides _w1598407 [4ARC654]

Fig. 11.3: Complex curves scipt 70

In the third exercise (Fig.11.5, Fig. 11.6) lines are drawn from the top of the sketch to the bottom, connecting random values. This an be easily used and applied to studio work linking relating values. Integer ‘n’ equals to the number of lines to be drawn. The if conditional is used with the xTop and xBelow integers being the range of x values to be linked with lines. Finally the last command of line is the length of the line linking the two x values.

Number of lines (n) = 50 xTop range = 50 - 550 xBottom range = 50 - 550

Number of lines (n) = 250 xTop range = 50 - 550 xBottom range = 50 - 550

Number of lines (n) = 50 xTop range = 50 - 250 xBottom range = 50 - 250

Number of lines (n) = 50 xTop range = 150 - 350 xBottom range = 250 - 550

Fig. 11.5: Arrays Script

Fig. 11.6: Arrays Sketch Constantina Avraamides _w1598407 [4ARC654]


Autonomous Agents The term ‘autonomous agent’ refers to a self determining body that makes its own choices on how to act within its the environment without any external influences of a leader or a global plan. In the late 1980s, the computer scientist Craig Reynolds developed algorithms that allowed entities to move independently. The algorithmic steering behaviors developed, allowed individual elements to navigate through their digital environments in a “ ‘lifelike’ manner with strategies for fleeing, wandering, arriving, pursuing, evading, etc.” (Shiffman, 2012). Simple locally based rules can be applied on multiple autonomous agents that move indipendently, giving rise to complex simulations. The most famous example of an artificial simulation is Reynolds’s ‘boids’ model for ‘flocking/swarming’ behavior. The principles of autonomous agents can be used in artificial simulations of ant and termite colonies as well as human ways traffic jams.

Flocking Exercise This exercise is an implementation of Craig Reynold’s Boids algorithm, simulating the flocking behavior of birds. Following the ‘Flocking’ on the processing website, each boid moves through the screen individualy, based on rules of avoidance, alignment, and coherence (Shiffman, 2012). The exercise utilises the principles of classes. Two classes are created a boid and a flock class. In the boid class all the functions of the triangles are described, while in the flock class the list of boid objects is described. The Final output is a sketch with dimensions 800 by 600 pixels and a purple background. A set number of yellow triangles, representing birds, are drawn onto the background at the first frame. Each time the mouse is clicked a new triangle is added onto the sketch.

Fig. 11.7: Flocking Simualtion Script Constantina Avraamides _w1598407 [4ARC654]

Fig. 11.8: Flocking Simualtion Flock Class

Fig. 11.9: Flocking Simulation Boid Class 72

Fig. 11.10: Flocking Simulation Sketch Constantina Avraamides _w1598407 [4ARC654]


[ References ]

12. References Figure References 1. Principles of Parametric Design

2. Data - structure and management

4. Vectors

Fig.1.1: Right Helicoid Source:, [Accessed 01 October 2016]. Fig.1.2: Plucker’s Conoid Source:, [Accessed 01 October 2016]. Fig.1.3: Hyperbolic Paraboloid Source: [Accessed 01 October 2016]. Fig.1.4: Moebius Strip Source: File:MobiusStrip-01.png [Accessed 01 October 2016]. Fig.1.5: A one-sheeted hyperboloid Source: [Accessed 01 October 2016 Fig.1.6: Shukov Tower grid shell Source: [Accessed 08 October 2016]. Fig.1.7: Kobe Port Tower Source: File:Kobe_Port_Tower03bs3200.jpg [Accessed 08 October 2016]. Fig.21: A Helicoid Source: Helicoid/web/index.html [Accessed 20 October 2016]. Fig.1.22: Spiral Staircase Source: [Accessed 20 October 2016]. Fig.1.23: Spiral Staircase Source: [Accessed 20 October 2016]. Fig.1.24: F&F Tower Source:[Accessed 20 October 2016]. Fig.1.25: Evolution Tower Source: [Accessed 20 October 2016]. Fig.1.26: Helix Spire Source: [Accessed 20 October 2016].

Fig.2.1: Regular Tessellations Source: tessellation.htm [Accessed 22 October 2016]. Fig 2.2: Division of the circle. Source: [Accessed 13 November 2016]. Fig. 2.3: Mosaic on the ceiling of poet Haphez’s tomb in Shiraz, Iran Source: [Accessed 12 November 2016]. Fig. 2.4: Mosaic on the dome of Sheikh Lotfollah Mosque in Isfaham Source: [Accessed 12 November 2016]. Fig. 2.5 : Jame Mosque of Yazd, Persia Source: [Accessed 13 November 2016]. Fig.2.6: Examples of Escher’s tesselations. Source: of_Regular_Division_of_the_Plane_with_Reptiles.jpg [Accessed 22 October 2016].

Fig. 4.1: Institude du Monde Arabe, Responsive Facade, Paris. Source: theenergyissue-jean-nouvels-responsive-solar [Accessed 24 December 2016]. Fig. 4.2: Al Bahar Towers Responsive Facade, Abu Dabi. Source: [Accessed 24 December 2016]. Fig. 4.3: Al Bahar Towers Facade Mechanism diagram. Source: http:// [Accessed 24 December 2016]. Fig. 4.4: The Airflow(er) Responsive Ventilation System, Lift Architects. Source: [Accessed 24 December 2016]. Fig. 4.5: Hyposurface, Interactive Display System. Source: https:// [Accessed 24 December 2016].

Constantina Avraamides _w1598407 [4ARC654]

3. Trigonometry Fig. 3.1: Arches of Pont du Gard aquaduct, France Source: http://www. [Accessed 23 November 2016]. Fig. 3.2: Dome of Pantheon, Rome. Source: galleries/landmarks/ [Accessed 23 November 2016]. Fig. 3.3: Suspension Bridge, The Millennium Bridge, London by Fosters and Partners, photos/13536831434 [Accessed 23 November 2016]. Fig. 3.4: The Gherkin, London Source: attractions/the-gherkin [Accessed 23 November 2016]. Fig. 3.5: Absolute Towers, Ontario Source: http://www.archdaily. com/306566/absolute-towers-mad-architects/ [Accessed 23 November 2016].

5. Basic Processing Concepts Fig.5.1: Space invaders monsters. Source: [Accessed 03 November 2016]. 8. NURBS, Parameter Space and Recursion Fig. 8.1: Natural Branching Fractal, River Network Canada. Source: http:// [Accessed 29 November 2016]. Natural Spiriling Fractals, Seashells Fig. 8.2: Source: photo-52464.aspx [Accessed 29 November 2016]. Fig. 8.3: Natural Spiriling Fractal, Seashell. Source: http://www. [Accessed 29 November 2016]. Fig. 8.4: Serpinski triangle. Source: htm [Accessed 29 November 2016]. Fig. 8.5: Mandelbrot Set. Source: https://histoireetcivilisation. com/2015/02/16/quest-ce-quune-fractale/ [Accessed 29 November 2016].


Fig. 8.6: Orient Station, Calatrava. Source: [Accessed 29 November 2016]. Fig. 8.7: Chhatrapati Shivaji International Airport, SOM. S ource: [Accessed 29 November 2016]. Fig. 8.8: L-System Fractals. Source: IntroToFrac/InitGen/LSystems/LSysGallery/LSysGallery.html [Accessed 29 November 2016]. Fig. 8.9: Koch curve diagram. The nature of Code. Daniel Shiffman. Chapter 8. Fractals. Source: [Accessed 29 December 2016]. Fig. 8.10: Koch curve. The nature of Code. Daniel Shiffman. Chapter 8. Fractals. Source: [Accessed 29 December 2016]. Fig. 8.11: Cantor Set. Source: [Accessed 29 December 2016]. Fig. 8.16: BĂŠzier curve. Source: [Accessed 29 December 2016]. Fig. 8.19: Curvature continuity Source: inventor-tutorials/autodesk-inventor-surfacing-curvature-continuity-sketch-constraints/ [Accessed 28 December 2016]. Fig. 8.20: Bullring Shopping Centre, Birmingham by Future Systems, 2003. Source: [Accessed 05 January 2017]. Fig. 8.21: Soumaya Mouseum, Mexico City by FR-EE Fernando Romero Enterprise, 2011. Source: [Accessed 05 January 2017] Fig. 8.22: Bullring Shopping Centre facade, Birmingham. Source: [Accessed 05 January 2017]. Fig. 8.23: Soumaya Museum facade, Mexico City. Source: Soumaya_Plaza_Carso_V.jpg [Accessed 05 January 2017].

Constantina Avraamides _w1598407 [4ARC654]

Fig. 8.24: 3D printed vases. Source: [Accessed 05 January 2017]. Fig. 8.25 3D printed Stool. Source: FoodInk_MamouMani_3DPrintingRestaurant-26.jpg [Accessed 05 January 2017].

9. Particle Simulation & Hydrological Prototype

Fig. 9.1: Monsoon Assemblages. Source: [Accessed 28 December 2016]. 10. Mapping the Pallikaranai Transect Fig.10.1: Madras Map, 1893 Source: DS18_2016 MONSOON ASSEMBLAGES CHENNAI. pg 4 [Accessed 20 December 2016]. Fig.10.2: Chinna Neelangarai Kuppam Fishing Village, 2016 Source: Constantina Avraamides Archive [Accessed 29 December 2016].


13. Bibliography Adiavastos, P. (2012). Processing to Grasshopper real-time communication. Grasshopper forum. Available from http://www. [Accessed on 07 January 2016]. AECOM. (2011). Designing with Responsive Building Elements. Birmingham: Aalborg University. Available from default/files/2015/09/2Designing_with_responsive_building_elements. pdf. [Accessed 25 December 2016]. amnon.owed . (2014). how do I make an array of circles? Processing Forum. Available from [Accessed 25 November 2016].

Hilbert, D. and Cohn-Vossen, S. (1999). Geometry and the Imagination, New York: Chelsea. MathYale. (ND). 1.C. Initiators and Generators. MathYale. Available from [Accessed 28 December 2016]. Merriam-Webster. (ND) Mandala. Merriam-Webster. Available from [Accessed 5 January 2017]. O’Neill, B. (1966). Elementary Differential Geometry, New York: Academic Press.

ArchDaily. (2012). Absolute Towers / MAD Architects. ArchDaily. Available from [Accessed 23 November 2016].

OM. (2016). Grasshopper Tutorial, Parametric Tower. Youtube. Available [Accessed 23 December 2016].

Christev, D. (2016) Grasshopper - Aperture System Tutorial. Youtube. Available from [Accessed 20 November 2016].

Paramarch (2016) 47 - Grasshopper - Intro to Attractor Points - Closest Point and Remap Numbers. Youtube. Available from https://www. [Accessed 27 December 2016].

Department of Islamic Art. (2001). Geometric Patterns in Islamic Art. In Heilbrunn Timeline of Art History. The Metropolitan Museum of Art Available from [Accessed 20 October 2016].

Paramarch. (2016). 50 - Grasshopper - Surface Box SBox Bounding Box BBox Morph to Generate Morphed Geometry. Youtube. Available from [Accessed 28 December 2016].

Escher, M. C. (2001). M. C. Escher, The Graphic Work, Introduced and Explained by the Artist, Koln: Taschen.

Pazos, A. (2011). Learn programming 63: Time for our first 3D animation. Youtube. Available from [Accessed 30 December 2016].

Fractal Foundation. (2009). Fractal Pack 1, Educators Guide. Fractal Foundation. Available from [Accessed 29 November 2016]. Gween. (2016). Recursive Tree. Openprocessing. Available from https:// [Accessed 29 December 2016].

Constantina Avraamides _w1598407 [4ARC654]

Barton, P. (2012) Creating arrays Tutorial. Lynda. Available from https:// ml?srchtrk=index%3a1%0alinktypeid%3a2%0aq%3aprocessing%0apage% 3a1%0as%3arelevance%0asa%3atrue%0aproducttypeid%3a2b [Accessed 19 November 2016].

Poulson, B. (2012). Drawing Bezier Curves Tutorial. Lynda. Available from q%3aprocessing%0apage%3a1%0as%3arelevance%0asa%3atrue%0aprod ucttypeid%3a [Accessed 20 November 2016]. Poulson, B. (2012). Drawing complex Curves Tutorial. Lynda. Available from 3aprocessing%0apage%3a1%0as%3arelevance%0asa%3atrue%0aproduct typeid%3a2#tab [Accessed 20 November 2016]. Senske. N. (2011). Grasshopper Lecture 3 - Part 4: Paneling with Morph Geometry. Youtube. Available from watch?v=mUqiXaF9w3A [Accessed on 26 December 2016]. Shiffman, D. (2012). Autonomous Agents. Chapter 6.1 Forces within. The nature of Code. Available from [Accessed 03 January 2017]. Shiffman, D. (2012). Flocking. Processing. Available from [Accessed 03 January 2017]. Shiffman, D. (2013). Hello Processing! Processing. Available from http:// [Accessed 03 November 2016]. Weisstein, E. W. (ND). Hellicoid. Wolfram Mathworld. Available from [ Accessed 1 October 2016]. Weisstein, E. W. (ND). Ruled Surface. Wolfram Mathworld. Available from [ Accessed 1 October 2016 ].


Constantina Avraamides _w1598407 [4ARC654]


University of Westminster [ Year 1 ] Master of Architecture [ 4ARC654 ] Digital Representation [ Group C ] Computational Design [ w1598407 ] Constantina Avraamides January 2017

Computational Design Portfolio