Leong_Nicola_Algorithmic Sketchbook Final

Page 1

algorithmic sketchbook ARCHITECTURE design studio NICOLA LEONG 586066

:AIR


ARCHITECTURE DESIGN STUDIO: AIR ALGORITHMIC SKETCHBOOK WEEK 1 Grasshopper is a great tool that provides users with the freedom to alter surfaces and reiterate a design, when Rhino would not ordinarily allow it. Previously named ‘Explicit History’, Grasshopper remembers the history of each curve and thus allows you come up with a number of iterations from the same original set of curves, for your parametric model.

From the initial lofted surface that was created in Grasshopper, each separate curve may be altered by turning ‘control points’ on. From here, the lofted surface may be stretched and pulled till the desired form is acquired. Grasshopper then allows you to ‘bake’ the surface. This means to set the object back into Rhino, enabling you to pull the surface out as a separate object. From there you can then save that particular design, and continue to modify the surface to create different outcomes.

NICOLA LEONG 586066


EXPERIMENTING WITH A CONTINUOUS SURFACE

As suggested in the video tutorial, I experimented with a continuous surface. In the same way as I had done previously, I lofted 3 curves (this time closed) and created, and baked a number of iterations from there. The red images below show the original lofted surface, before any changes were made.

SIDE FRONT BACK TOP

From the original loft, I turned on control points, manipulated each of the curves to alter the shape, baked and extracted the forms shown above.

NICOLA LEONG 586066


TRIANGULATION ALGORITHMS DELAUNAY

VORONOI The voronoi algorithm creates cells around points, as opposed to the delaunay triangulation which draws edges across points. The screen-grab below shows the Voronoi cells in green, and the Delaunay triangulation in red. The Delaunay triangulation produces triangles between points, ensuring that the edges never overlap. This tool may be useful in order to quickly generate terrain.

After drawing a number of curves, Grasshopper allowed me to create a terrain surface over the curves that I had drawn with the Delaunay triangulation. The triangulation could be set over each of these curves separately, or I could flatten the surface, allowing the triangulation to span across the 4 drawn curves.

Both of these algorithms are often used in architecture to create patterns. Instead of using a random distribution of points, we can also use an ordered distribution of points. In the shot above, I have used a hexagonal grid, which in the Delaunay algorithm creates equilateral triangles. In contrast to this, the Vornoi component creates cells around the equilateral triangles, ordered into hexagons. NICOLA LEONG 586066


VORONOI 3D TRIANGULATION ALGORITHM

The Voronoi 3D triangulation algorithm allows us to apply points into a 3 dimensional object, in this case a rectangular box that I have drawn. First I populated the interior of the box with points, using Grid-Populate 3D. Once the points are connected up to the Voronoi component on Grasshopper, 3 dimensional cells are created around each of the points within the box. From there, I was able to ‘bake’ the form into Rhino and ‘pull’ out the shape from the original box. Once baked, I was able to modify the shape by deleting some of the cells to create this fragmented rectangle.

NICOLA LEONG 586066


ARCHITECTURE DESIGN STUDIO: AIR ALGORITHMIC SKETCHBOOK WEEK 2

CURVE

Curve-AnalysisEND POINTS

LINE REPARAMETERIZE

We can use Grasshopper to connect curves that we have drawn in Rhino into a closed surface.

CURVE

DISCONTINUITY

AVERAGE

The number slider allows us to move the point along the curve. eg/ 0.5 would place the X along the parametric midpoint of the curve. This is not necessarily the midpoint in term of length, as the control points aren’t layed out evenly.

LINE

After averaging the corner points to find the centre point, we can then break up the polyline in to triangulated chunks by adding the line tool.

NICOLA LEONG 586066


DIVISION COMPONENTS

If we choose to move the original curves, all of the arcs set in Grasshopper will update.

Division components allow us to divide curves into points or into smaller curve segments. We can use the divide tool to place points evenly along each of the curves, and connect it to the Arc component to create a series of arcs across the points.

NICOLA LEONG 586066

We can also divide the arcs by length, using the Division Component- Divide Length.


SPLINE MENU

Interpolate (under the spline menu) allows us to fit nurbs curves precisely across our set of points. Polyline fits straight lines in a grid across the points as opposed to interpolate curves which creates a curved grid.

NICOLA LEONG 586066


TRANSFORM MENU


ARCHITECTURE DESIGN STUDIO: AIR ALGORITHMIC SKETCHBOOK WEEK 3 CREATING A GRID SHELL In order to create a grid shell, I drew a number of circular curves on different levels, and created arcs between them. For some reason I wasn’t able to get smooth arcs between each of the curves, possiby because of the number of control points on each of hte oiginal curves I drew in Rhino.

Grasshopper allows you to imput a points button, which labels each of the points for you, making it easier to see where each of the arcs connect. As you can see, the numbers were very jumbled, causing the arcs to go haywire.


Although the arcs didn’t work like how they were suppposed to for me, I still continued with the loft just to see what the result would be. I thought what was produced turned out to be rather interesting, this kind of shell, trapped in another shell which is intwind in another.



I redid this exercise, this time beginning with three simple rectangles. The arcs this time worked properly, and hence when lofted, I got a smooth and fluid shape.


EXPERIMENTATION USING DIFFERENT SHAPES

By moving around the placement of the rectangles, I was able to create slightly different iterations of a similar shape.


FURTHER EXPERIMENTATION

I decided to experiment with different shapes and lofts, and how the result of the loft would change if the curves were selected in a different order. The loft that was produced as a result of this was actually quite interesting. What I managed to create was a spiral that folded in toward itself. If this were a building, the exterior facade would fold in to the interior and vice versa, basically a series of ramps.


Grasshopper became a bit messy at this stage, as I experimented with different links between imputs.


I really like how in this iteraion, the surface continues to fold in on itself. I can imagine people waking on this, as if some sort of strange and spiraling ramp.


PATTERNING LISTS

Once you have created a surface in Rhino, Grasshopper allows you to divide the surface into points, which then allows you to create patterns across it.


We can alter the amount of points on the surface to increase the density of the pattern.


Creating different iterations by changing the imputs.


Grasshopper allows you to calculate the area of each grid square.



ARCHITECTURE DESIGN STUDIO: AIR ALGORITHMIC SKETCHBOOK WEEK 4

MODELLING A PYRAMID IN GRASSHOPPER Rather than modelling a pyramid in Rhinocerous, modelling one in Grasshopper allows us to create a definition that has a lot more creative flexibility within it. We are able to play around with the shape more easily, and bake iterations back into Rhino oas we go along.

‘Drawing’ a pyramid in Grasshopper.


PYRAMID ITERATIONS

Using Grasshopper, I was able to manipulate the pyramid by adding sliders to vary the overall size of it, the width of each face, and the height of the pyramid.


PYRAMID ITERATIONS USING GRASSHOPPER COMPONENTS

RADIUS OF IMPUT POLYGON NUMBER OF SIDES EDGE LENGTH (OF CORNER TRIANGLES)


RADIUS OF IMPUT POLYGON

This slider increases the radius of the polygon, therefore increasing the overall size of the shape.

NUMBER OF SIDES

By increasing the number of sides to our polygon, we can create some interesting shapes. More sides also resulted in a much flatter shape.


EDGE LENGTH (OF CORNER TRIANGLES)

The length of the edges of the corner triangles increases, cutting into the original pyramid more and more


CREATING A FRACTAL TETRAHEDRA


CREATING A FRACTAL TETRAHEDRA

I was only able to select either the inner portion or one of the outer pieces of the pyramid to extract as a fractal for some reason, so I chose the outer bit.


CREATING A FRACTAL TETRAHEDRA

For some reason the original ‘cap’ component didn’t work, so I typed in ‘cap’, and found the cap holes component. I selected my baked shapes in Rhino, set them as ‘Brep’ components, and used the cap tool to close the gaps.


The overall Grasshopper definition.


ARCHITECTURE DESIGN STUDIO: AIR ALGORITHMIC SKETCHBOOK WEEK 5

EVALUATING FIELDS

In this Grasshopper definition, we have set multiple curves, used the divide curve button to populate each of the curves with points, and added a number slider to control the amount of points shown.




EXPERIMENTING

Turning Contol Points On, and moving points in the vertical direction in order to turn the flat object, into a 3 dimensional one.




CREATING ITERATIONS FROM THE SKYAR TIBBITS VOLTADOM DEFINITION

OPEN CONICAL

MEDIUM POPULATION, LOW HEIGHT

MEDIUM POPULATION, VARYING

ROUNDED CONICAL

MEDIUM OVERLAP, SMALL POPU-

OPEN & CLOSED CONICALS

LARGE OVERLAP, SMALL POPULATON, NO OPENING


DENSE POPULATION, LOW HEIGHT, LARGE OPENING, CLOSE PROXIM-

LARGE OVERLAP, DENSE POPULATION, ONE OPENING

DENSE POPULATION, HIGH HEIGHT, CLOSE PROXIMITY

LARGE OVERLAP, DENSE POPULATION, NO OPENINGS, INVERTED ROUNDED CONICAL


OPEN & CLOSED SPHERES

COMBINATION: SPHERES, CYLINDERS AND CONICALS

CYLINDERS & POINTED CONICALS + SPHERES & POINTED CONICALS



ARCHITECTURE DESIGN STUDIO: AIR ALGORITHMIC SKETCHBOOK WEEK 6

REVERSE ENGINEERING

We chose to reverse engineer the Atmospheric Tessellation Lighting Installation.


CREATING THE 3D TRIANGULATED PATTERN


First failed attempt to reverse engineer the ‘Atmospheric Tesselation’ Project. Couldn’t get the panels to tesselate- instead produced a surface with lots of gaps/ holes.


SURFACE TRIANGULATION


POPULATING THE SURFACE WITH A PATTERN


CAPPING THE HOLES

For some reason the patch tool kept failing to work, and would only cap the holes on one of the triangulationsspecifically the one on the very end. Connecting a cap holes component worked to cap pretty much all the holes on the top, however it caused some of the sides of the individual components to disappear.



FINAL PRODUCT


ARCHITECTURE DESIGN STUDIO: AIR ALGORITHMIC SKETCHBOOK WEEK 7

To create the matrix of 50 iterations, we began with 3 Grasshopper definitions. Although similar, they allowed us to create a number of unlike definitions after we played around with each of them.

GRASSHOPPER DEFINITION 1: CONSTANT QUAD SUBDIVIDE


GRASSHOPPER DEFINITION 2: HEXAGON CELLS

As explained on the food4rhino website, the Grasshopper Lunchbox plugin allows users to: Generate- components for generative geometry Math- create parametric surfaces and forms such as the Mobius, Klein, or 3D Supershape Panels- create paneling systems such as quad grids, diamonds, or triangles. Structure- create wire structures such as diagrids or space trusses. Utility- rationalize spline curves and reverse surfaces. Workflow- read and write Excel files and automate baking and saving. We used Lunchbox to help create a panelling system more easily, as it was otherwise rather difficult, as we discovered in the weeks prior.


GRASSHOPPER DEFINITION 3: SUBDIVIDE TRIANGLES


CREATING ITERATIONS

I started out creating iterations on this undulating surface, however because the base surface was curvy, Grasshopper was taking a long time to calculate how it would populate the surface. We decided it would be quicker to generate our 50 iterations on a smaller and simpler suface, and once we had chosen ones we liked, we could then implement these definitions on a more complex surface. To export surfaces into 2D linework, I created a named perspective view on Rhino, using command- NamedView. I saved my desired view, and from there used the command- Make2D, to flatten each of my 3D iterations into 2D linework. I had lots of trouble with Rhino freezing and crashing on me with a lot of the more complex iterations as there was a lot of linework that had to be calculated. I found that joining all of the surfaces first helped quicken the process, as well as ensuring that Rhino was running as 64 bit. After making all my 3D surfaces into 2D linework, I selected each of the iterations (in top view) and exported each as an illustrator file, where I could then change the lineweight, colour, size etc.


ITERATIONS PRODUCED FROM GRASSHOPPER DEFINITION 1:

SCALE FACTOR 1 (TOP): 1.225 Z FACTOR: 4 SCALE FACTOR 2 (BOTTOM): 0.130

SCALE FACTOR 1 (TOP): 0.325 Z FACTOR: 6 SCALE FACTOR 2 (BOTTOM): 0.900

SCALE FACTOR 1 (TOP): 0.450 Z FACTOR: 5 SCALE FACTOR 2 (BOTTOM): 0.371

U DIVISION: 4 V DIVISION: 7 SCALE FACTOR 1 (TOP): 0.795 Z FACTOR: 4 SCALE FACTOR 2 (BOTTOM): 0.914

U DIVISION: 1 V DIVISION: 3 SCALE FACTOR 1 (TOP): 0.795 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.914

TRI PANEL CONSTANT QUAD SCALE FACTOR 1 (TOP): 1 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.8 PATCH ENABLED

TRI PANEL CONSTANT QUAD SUBDIVIDE: 1 SCALE FACTOR 1 (TOP): 1 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 1

TRI PANEL CONSTANT QUAD SCALE FACTOR 1 (TOP): -0.432 Z FACTOR: 8 SCALE FACTOR 2 (BOTTOM): 2 PATCH DISABLED

TRI PANEL CONSTANT QUAD SUBDIVIDE: 3 SCALE FACTOR 1 (TOP): 0.8 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.964

U DIVISION: 1 V DIVISION: 5 SUBDIVIDE: 1 SCALE FACTOR 1 (TOP): 2.0 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.908

TRI PANEL CONSTANT QUAD SUBDIVIDE: 2 SCALE FACTOR 1 (TOP): 0.853 Z FACTOR: 6 SCALE FACTOR 2 (BOTTOM): 0.964 PATCH DISABLED

U DIVISION: 5 V DIVISION: 5 SUBDIVIDE: 1 SCALE FACTOR 1 (TOP): 1.0 SCALE FACTOR 2 (BOTTOM): 0.9 Z FACTOR: 2 X FACTOR: 2 Y FACTOR: 2

U DIVISION: 1 V DIVISION: 2 SUBDIVIDE: 2 SCALE FACTOR 1 (TOP): 0.427 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.583

TRI PANEL CONSTANT QUAD SCALE FACTOR 1 (TOP): 2.3 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 0.41

TRI PANEL CONSTANT QUAD SCALE FACTOR 1 (TOP): 0.189 Z FACTOR: 6 SCALE FACTOR 2 (BOTTOM): 0.964 PATCH DISABLED


ITERATIONS PRODUCED FROM GRASSHOPPER DEFINITION 2:

SCALE FACTOR 1 (TOP): 0.539 Z FACTOR: 3 SCALE FACTOR 2 (BOTTOM): 0.899

HEXAGON SCALE FACTOR 1 (TOP): 1 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 1 PATCH ENABLED

U DIVISION: 8 V DIVISION: 20 SCALE FACTOR 1 (TOP): 1.0 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 0.7 PARAMETER (T): 0.8

U DIVISION: 8 V DIVISION: 10 SCALE FACTOR 1 (TOP): 0.6 Z FACTOR: 5 SCALE FACTOR 2 (BOTTOM): 0.9 PARAMETER (T): 0.75 PATCH DISABLED

U DIVISION: 10 V DIVISION: 15 SCALE FACTOR 1 (TOP): 7 Z FACTOR: 3 SCALE FACTOR 2 (BOTTOM): 1.3

U DIVISION: 13 V DIVISION: 15 SCALE FACTOR 1 (TOP): 0.6 Z FACTOR: 4 SCALE FACTOR 2 (BOTTOM): 0.869 PARAMETER (T): 0.1 PATCH ENABLED

U DIVISION: 5 V DIVISION: 10 SCALE FACTOR 1 (TOP): 1.3 Z FACTOR: 5 SCALE FACTOR 2 (BOTTOM): 0.3 PARAMETER (T): 0.9, 0.7 PATCH ENABLED

U DIVISION: 6 V DIVISION: 8 SCALE FACTOR 1 (TOP): 0.6 Z FACTOR: 6 SCALE FACTOR 2 (BOTTOM): 0.9 PARAMETER (T): 0.75 PATCH ENABLED

SCALE FACTOR 1 (TOP): 1.000 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 0.908

HEXAGON SCALE FACTOR 1 (TOP): 3.40 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 0.264 PATCH ENABLED

SCALE FACTOR 1 (TOP): 0.680 Z FACTOR: 4 SCALE FACTOR 2 (BOTTOM): 0.807

HEXAGON SCALE FACTOR 1 (TOP): 0.097 Z FACTOR: 15 SCALE FACTOR 2 (BOTTOM): 0.854 PATCH ENABLED

SCALE FACTOR 1 (TOP): 1.555 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.807 PATCH DISABLED

HEXAGON SCALE FACTOR 1 (TOP): 0.417 Z FACTOR: 6 SCALE FACTOR 2 (BOTTOM): 1.316 PATCH ENABLED

U DIVISION: 13 V DIVISION: 15 SCALE FACTOR 1 (TOP): 0.6 Z FACTOR: 4 SCALE FACTOR 2 (BOTTOM): 0.869 PARAMETER (T): 0.1 PATCH ENABLED

SCALE FACTOR 1 (TOP): 1.555 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.807 PATCH ENABLED

HEXAGON SCALE FACTOR 1 (TOP): 1.48 Z FACTOR: 3 SCALE FACTOR 2 (BOTTOM): 0.8 PATCH DISABLED

U DIVISION: 13 V DIVISION: 15 SCALE FACTOR 1 (TOP): 0.6 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.9 PARAMETER (T): 0.1, 0.3 PATCH DISABLED


ITERATIONS PRODUCED FROM GRASSHOPPER DEFINITION 3:

SCALE FACTOR 1 (TOP): 1.548 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.769 PATCH ENABLED

SCALE FACTOR 1 (TOP): 1.548 Z FACTOR: 2 SCALE FACTOR 2 (BOTTOM): 0.769 PATCH DISABLED

U DIVISIONS: 24 V DIVISIONS: 25 SCALE FACTOR 1 (TOP): 0.241 Z FACTOR: 4 SCALE FACTOR 2 (BOTTOM): 0.769 LOFT COMPONENT REPLACED B EXTRUDE

TRIANGULATED SUB PANEL SCALE FACTOR 1 (TOP): 1 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 1 PATCH ENABLED

TRIANGULATED SUB PANEL SCALE FACTOR 1 (TOP): 0.533 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 1.635 PATCH DISABLED

U DIVISION: 1 V DIVISION: 3 SCALE FACTOR 1 (TOP): 0.6 SCALE FACTOR 2 (BOTTOM): 0.488 Z FACTOR: 2 X FACTOR: 6 PATCH ENABLED TRIANGULAR PANELS

SCALE FACTOR 1 (TOP): 0.928 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 0.769 PATCH DISABLED

TRIANGULATED SUB PANEL SCALE FACTOR 1 (TOP): 1.56 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 1 PATCH DISABLED

U DIVISION: 1 V DIVISION: 3 SCALE FACTOR 1 (TOP): 0.488 SCALE FACTOR 2 (BOTTOM): 0.846 Z FACTOR: 2 PATCH DISABLED TRIANGULAR PANELS

SCALE FACTOR 1 (TOP): 0.928 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 0.769 PATCH ENABLED

TRIANGULATED SUB PANEL SCALE FACTOR 1 (TOP): 1.560 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 0.162 PATCH DISABLED

U DIVISION: 5 V DIVISION: 8 SCALE FACTOR 1 (TOP): 0.488 SCALE FACTOR 2 (BOTTOM): 0.846 Z FACTOR: 2 PATCH ENABLED RANDOM QUAD PANEL S: 5

TRIANGULATED SUB PANEL SCALE FACTOR 1 (TOP): 1.560 Z FACTOR: 1 SCALE FACTOR 2 (BOTTOM): 0.1635 PATCH DISABLED

U DIVISION: 3 V DIVISION: 5 SCALE FACTOR 1 (TOP): 0.3 SCALE FACTOR 2 (BOTTOM): 0.9 Z FACTOR: 5 PATCH DISABLED RANDOM QUAD PANEL S: 1 SUBDIVIDE QUAD

SCALE FACTOR 1 (TOP): 0.241 Z FACTOR: 4 SCALE FACTOR 2 (BOTTOM): 0.769 LOFT COMPONENT REPLACED B EXTRUDE

U DIVISION: 3 V DIVISION: 3 SCALE FACTOR 1 (TOP): 0.3 SCALE FACTOR 2 (BOTTOM): 0.9 Z FACTOR: 7 PATCH ENABLED SUBDIVIDE QUAD SKEWED QUADS T: 0

REVSRF 3: REVERSE UV U DIVISION: 2 V DIVISION: 1 SCALE FACTOR 1 (TOP): 0.3 SCALE FACTOR 2 (BOTTOM): 0.9 Z FACTOR: 7 PATCH ENABLED TRIANGULAR PANELS

REVSRF 3: REVERSE UV U DIVISION: 6 V DIVISION: 2 SCALE FACTOR 1 (TOP): 0.8 SCALE FACTOR 2 (BOTTOM): 0.9 Z FACTOR: 7 PATCH ENABLED SUBDIVIDE QUAD SKEWED QUADS T: 0


ARCHITECTURE DESIGN STUDIO: AIR ALGORITHMIC SKETCHBOOK WEEK 8 ONWARD

RHINO RENDERS- NORTH, SOUTH, EAST & WEST VIEWS


RHINO RENDER - STRUCTURAL STEEL & TOP VIEW OF POD PAVILION The steel structure doesn’t connect to the pod pavilion above, so we need to figure out how this connection would work. The form is also lacking at this stage, and the square edges don’t compliment the curved inner surface.

TOP VIEW


RHINO RENDER - TRIANGULATED STEEL STRUCTURE For our final model, we hope to figure out how to create a hexagonal structure underneath our model rather than a triangulated structure, as this structure looks very seperate from the pods. Here the structure doesn’t properly connect with the pods- whereas we for our final design we would like the pods to sit within the steel structure which would act as a frame/base for each of the pods.


RHINO LASER CUTTING FILE This is the file sent into the Fab Lab for Laser cutting. Pods on our surface were unrolled in Rhino and arranged on the sheet.


FILE SET UP FOR 3D PRINTER Before sending files to the 3D printer, we had to make sure that the file was set up correctly for printing. This involved cleaning up any overlaps, extruding the thickenss to a suitable length, and proper scaling. We used MeshLab to help assist with this.

TOP VIEW

ABOVE/SIDE VIEW


UNDERSIDE

SIDE VIEW


SURFACE DEFINITION


HEXAGONAL SURFACE PATTERN DEFINITION


SOLAR ANALYSIS DEFINITION USING LADYBUG Using Ladybug, we were able to conduct a radial solar analysis of the average sun in Copenhagen. Conducting a sun study allowed us to optimize our form in regards the results, and reduce the amount of problem areas (areas which received little sun).


SOLAR ANALYSIS USING LADYBUG



SHADOW STUDY DEFINITION USING LADYBUG Using Ladybug, we were also able to carry out a shadow study- which showed us which areas of our pavilion might be overshadowed by taller areas.


STRUCTURAL ANALYSIS USING KARAMBA


1CM

4CM

2CM

7CM

We used Karamba to test the structural stability of our framework, and to see how thick we needed the steelwork to be. The different colours alerted us to problem areas which we could then find solutions to.

3CM

8CM


STRUCTURE/ PIPES DEFINITION


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.