NET.SIM

Page 1

NET.SIM digital simulation of tension-active cable nets for design investigation of material behaviours on structure and spatial arrangement

Architectural Association Emergent Technologies and Design Masters of Architecture Dissertation 2007-2008

ring ring

Sean Ahlquist

Moritz Fleischmann

Tutors: Michael Hensel

Achim Menges

Michael Weinstock

OUTLINE

ABSTRACT

1 PRECEDENTS & PRIMARY RESEARCH

1.1 Precedents

1.1.1 Physical Form-Finding

1.1.2 Computational Form-Finding Engineering-Based Software for Form-Finding Software Using Spring-Based Solvers

1.1.3 Articulation of Computational Form through Fate Map

1.1.4 Cable Nets as Space-Making Devices

1.2 Computational Networks

1.2.1 Network and Geometric Topology

1.2.2 Spring-Based Particles Systems

1.2.3 Springs in Processing Hooke’s Law

1.2.4 Cylindrical Net Topology

2 EXPERIMENTS & DEVELOPMENT

2.1 Embedded Fabrication

2.1.1 Cylindrical Transformations

2.1.2 Mapping of Computational Cylindrical Net

2.1.3 Data Mining for Fabrication through Node ID

2.1.4 Spatial Articulation of Net

2.1.5 Evaluating Cable Net Installation

2.2 Topologically Defined Net Components

2.2.1 Component Systems for Form-Found Structures

2.2.2 Subdivision Algorithm for Cellular Framework

2.2.3 Single Cell Net Parameters

2.2.4 Multiplication and Association of Net Components Hierarchies and Meta-Spring

2.2.5 Evaluating Cab le Net Installation

2.3Threshold Conditions

2.3.1 Comparing Actual Density and Perceived Density

2.3.2 Computational Threshold Analysis

2.3.3 Extended Vector-Based Analyses

3 APPLICATION & OUTLOOK

3.1 Contextual Inputs

3.1.1 In-Situ: Turbine Hall of Tate Modern

3.1.2 Comparison to Marsyas Installation

3.2 Conclusion

3.2.1 Elemental Processes

3.2.2 Architectural Emergence

3.2.3 Embedded Feedback

3.3 Outlook

4 REFERENCES

5 APPENDIX

3.3.1 Translations to Material and Fabrication

5.1 Apendix A: Rhino Scripts

5.2 Apendix B: Processing Scripts

5.3 Work Map

5.4 DVD

2

NET.SIM digital simulation of tension-active cable nets for design investigation of material behaviours on structure and spatial arrangement

3

ABSTRACT

Tension active systems are compelling architectural structures having an intimate connection between structural performance and the arrangement of material. The direct flow of structural forces through the material makes these systems attractive and unique from an aesthetic point of view, but they are a challenge to develop from a design and an engineering perspective. Traditional methods for solving such structural systems rely on both analog modeling techniques and the use of highly advanced engineering software. The complexity and laborious nature of both processes presents a challenge for iterating through design variations. To experiment with the space-making capabilities of tension active systems, it is necessary to design methods that can actively couple the digital simulation with the analog methods for building the physical structure. What we propose is a designer-authored process that digitally simulates the behaviors of tension active systems using simple geometric components related to material and structural performance, activated and varied through elemental techniques of scripting. The logics for manufacturing and assembly are to be embedded in the digital generation of form. The intention is to transform what is a highly engineered system into an architectural system where investigation is as much about the determination of space and environment as it is about the arrangement of structure and material.

4
1

1 Computationally form-found structure. Branched, volumetric structure formed with 4 topologically cylindrical net components.

5

1 PRECEDENTS & PRIMARY RESEARCH

1.1 Precedents

1.1.1 Physical Form-Finding

1.1.2 Computational Form-Finding Engineering-Based Software for Form-Finding Software Using Spring-Based Solvers

1.1.3 Articulation of Computational Form through Fate Map

1.1.4 Cable Nets as Space-Making Devices

1.2 Computational Networks

1.2.1 Network and Geometric Topology

1.2.2 Spring-Based Particles Systems

1.2.3 Springs in Processing Hooke’s Law

1.2.4 Cylindrical Net Topology

6
7

1.1 Precedents

8
1.1-1

A common method for digital design generation is to separate the shaping of form from the application of a structural strategy. While this process allows for freedom in form and space experimentation, it often leads to problems when coordinating a structural system with the forms that have been established. In comparison, with tension active systems the overall form and position of materials are driven directly by the flow of forces through the system. This presents a certain degree of efficiency in the relation of material to structure and enclosure of space. The lightness of these structures in relation to the amount of force that they can withstand is attractive. It presents an opportunity to directly link design generation with the material and structural strategy. But, the complexity of this type of structural system poses a challenge for the architects, particularly those who wish to explore non-standard spatial and material organizations.

1.1-1

Computational spring-based model built in Processing, describing the elements of a kinetic structure and whether they are acting in tension or compression. Simulation by Sam Joyce, Bath University of the Heatherwick Studio Rolling Bridge project.

9

Defining architecture in a digital environment is a matter of manipulating geometries. Geometries without structural or material constraints have a vast solution space. The first step for narrowing the solution space is in defining the most basic geometric element and charging it with properties (constraints) based on physical behavior. The next step is addressing the network by establishing a solver for the behavior of the whole system (aggregation of geometric units). In the case of simulating cable nets, a simple digital element that can simulate flow of forces is a computational spring which follows Hooke’s Law of elasticity. This is represented by a simple unit of geometry (a line), yet dynamic and extensible in that it can be realized as an element under tension force or compression force, with direct implications into material definition. Solving the network happens through the method of dynamic relaxation, iterative steps for finding the balance of force flow through the system.

To fold this into a system for iterative design and structural behavior simulation, there has to be variability and accessibility within the system. The mathematics and programming for computational spring systems and dynamic relaxation are advanced, but their processing load is quite light. The number of variables for a single spring is limited but can be connected to material properties such as elasticity. The organization of a network of springs, though, is completely flexible and independent of the individual spring properties. Accessing variables of individual springs

and defining the protocol for connectivity of the network are straightforward and done through basic scripting.

This mode of realizing extensibility through simple material units and techniques for transformation fits with the process of biological growth. Examining these methods aid in understanding the need for simple design mechanisms to generate high degrees of variation and specification in form. Activating all of the options for spring parameters and network association provides for vast arrays of forms, each of which are structurally valid. But, considering this tool as a system for exploration, validity could be expanded to consider forces of arrangement, function, atmosphere, and other spatial characteristics. These particular traits would be realized through a well-managed catalog of elements and variables.

1.1.1 Physical Form-Finding

The study of cable net structures falls into the more general category of form-finding, structural systems where material and structure have very strong interdependencies. Form-finding, in contemporary methods, is done through two sets of procedures: physical simulation with scale models, and digital simulation through advanced engineering software. These two modes are often not directly related, and both, independently have impedances to a quick, iterative design-oriented process. The resolution and optimization of material to structure is often the singular mode of

intention for both of these processes.

Physical modeling as the method for designing with form-finding structures is done at a particular scale where there can be a connection between the materials in the scale model and the materials to be used in construction. This often means models are built at a scale as close to 1:1 as possible. Where the flow of force is dependent on the properties of the material, “scaling” the performance of the model to full-scale means there has to be a link in material make-up between the different scales. There is a translational process not only in size but in material properties, structure, and performance of the overall system. This transition if often not easily accomplished. Factors of material and structure can scale at different rates when moving up in size.

To study the analog model, understanding the transitions in scale, means an almost scientific examination of its behavior, purely within the scope of structural performance and how the materials can withstand those forces. This knowledge and method is outside of the realm of the architect as a designer. To understand the behavior of the system, the entire system has to be constructed. This is embedded in the nature of structures based on form-finding. Structure and material are interdependent; therefore all material parts play a role in the shaping of form. Where the architect wants to investigate various possibilities of the effects of the structure on physical environment and its influences on inhabitation, changes to parts of the system

10
1.1-3 1.1-2
precedents 1.1.1 Physical Form-Finding

are inevitably necessary. This means a cost in the physical adjustment of the scale models, and the re-analysis of the relation of material and structure for the entire system. Iterative design changes are a challenge in this mode of design investigation. When basing process and analysis on physical modeling methods, the transition to information for construction is cumbersome as well. It means another layer of incredibly precise examination to determine dimensions for material and methods of assembly.

1.1-2

Tension-active

1.1-3

Proposal

1.1-4

11
design investigation. Frei Otto, for Stuttgart Main Railway Station. for Stuttgart Main Railway Station. Ingenhoven Architects. Example of an analog form-finding model. Frei Otto, Munich Olympic Stadium, scale 1:125. 1.1-5
1.1-5 1.1-4
Photo of cable-net and membrane structure. Frei Otto, Munich Olympic Stadium.

1.1.2 Computational Form-Finding

The process of developing form-found tensionactive structures is highly technical and exhaustive. The primary methods are through either analogue modelling and analysis techniques or in specialised engineering software. The breadth of knowledge necessary to utilise these methods and their highly prescriptive nature are impediments to a design process investigating variation in form of this structural type and its potential for non-standard spatial and environmental conditions. The development of computational spring algorithms has provided an avenue for efficient studies of tension active structures. Accomplished through a programming language such as Processing, the design environment is also accessible and variable. Tracking through examples of spring systems generating hybrid tension/compression structures, a design process can be formed with elemental means of geometry and programming, making possible iterative investigations of complex tension-active systems.

Engineering-Based Software

Digital simulation alleviates some of the issues around translation in terms of physical forces and information for construction. But, the accessibility of these programs, such as Forten 3000, from a design point of view is limited, and the use does still demand expertise in the structuring of tensile systems. RhinoMembrane, by TSI, is a plug-in for Rhino that simulates tensile membrane

structures, and attempts at bridging the gap between design and engineering for tension-active systems. In testing the software, though, there is still a limitation to design investigation. Because of the demanding setup and the prescription of certain elements to their part in the form-finding process, defining edge cables and pre-stress for instance, being able to control and vary the system is difficult. Also, this works with a “black box” algorithm meaning the computation and mathematics at play are not being fully exposed to the designer therefore not utilized in the design investigation process. These engineering-based software packages and plug-ins do not offer a light or low-resolution analysis within the architects grasp to provide intuition in form-making that can later be fully examined.

Relatively new packages have emerged that are oriented towards architects, where it is considered that the architect is more interested in design than technical specification and analytical feedback. To provide design accessibility, though, these softwares have to minimize the range of geometric options, while still demanding a specification of elements during the setup of the design. For the Formfinder software, the base geometric components to start with either a “regular” or “radial” mesh description. These particularly topologies will have limits to the type of geometries that can be produced. The software also only deals with “open” surfaces (sheets). The Rhino Membrane plug-in does allow a large range of meshes as the initial input. The geometries are

“relaxed” based on rules for defining a surface with equilibrium tension. But, the relxation solver highly depends on the specification of the “edges” of the membrane. The edges define where the rest of the geometry will relax towards. What this means is that the definition of the edge gives a strong indication of what the general position of the relaxed geometry will be. It minimizes the concept of form-finding, and leaves design to the configuration of the edges and the strength to which the hold the shape when tension forces run through the geometry. This is a challenging parameter to control when there is no understanding of the exchange between initial shape, edge definition, and relaxed geometry.

12
1.1-7 1.1-6 precedents 1.1.2 Computational Form-Finding

1.1-6

inTens software by Tensys. Finite element analysis is integrated in the program for creating tensionactive structures.

1.1-7

RSTAB software connected to Easy membrane design software, by Dlubal. Together, the software packages can produce models, provide analysis, and produce data for fabrication.

1.1-8 Formfinder software. The software is defined as a sketching tool of membrane design for architects.

1.1-9 Rhino Membrane plug-in by TSI for Rhino3d. Finite element analysis is included in this plug-in that relaxes any mesh to a stressed (tension) surface.

13
1.1-9 1.1-8

Software Using Spring-Based Solvers

Various experiments in developing digital algorithms mimicking form-finding methods have led to the creation of an efficient computational method for simulating tension-active systems based on springs. In 2004, Prof. Ochsendorf and Simon Greenwold, through a workshop at MIT, conducted digital form-finding experiments based on Gaudi’s analog form-finding experiments with catenaries. One product of this workshop was an algorithm built for the Processing language based on the physics of springs. Axel Kilian, as a part of his PhD research at MIT, utilized this algorithm to digitally form-find linear catenaries. He extended the application to solve for tensile surfaces by using a network of springs. Springs are a part of a computational physics model where their force, generally, is connected to the distance at which the two ends of the spring sit apart from each other. Hooke’s Law specifies the amount of force through the degree of difference between a spring’s actual length and its rest length. A spring-based computational system serves as an efficient solver for tension-active systems. The particular system by Greenwold is placed within the programming environment of Processing (a Java based language) allowing it be lightweight, flexible, and openly accessible.

Spring systems become effective design experimentation tools when they are computationally efficient and openly accessible. Visually, responsiveness is necessary to understand the relation-

ship between the outcomes emerging from the process and the input parameters. Accessibility is necessary from a programming standpoint, so that the algorithms necessary to run the system can be developed and controlled by the designers themselves. A design system developed by Soda shows how a complex structure can be understood and refined visually through interactive engagement and immediate feedback. Sodaconstructor is a web-based construction kit for spring systems, developed through an interest in dynamic systems where behaviour could arise through the feedback between the user and the computational rules of the system.1 What emerges is an understanding of how particles and springs interact in the context of gravity and movement. What this poses for a design paradigm is that spring systems can be very lightweight computationally allowing for configurations to be developed, varied and reconfigured while structural forces are solved instantaneously.

Connecting the dynamic nature of spring systems and the affects of mapping particular associations of springs is expressed in a model that describes the Rolling Bridge by Heatherwick Studio. By configuring the truss network with springs, the simulation, written in Processing, is able to describe tension and compression forces, and the switching in between. The experiment seeks to understand the physical behaviour of the constructed bridge through the conceptual nature of the computationally based spring system. This offers interesting possibilities in describing valid structures through a computational component that has specific

structural properties but not absolute material properties.

The simulation of the Rolling Bridge offers a different approach from the Sodaplay website in that it is not interface driven. Both are based on computational springs, but the Rolling Bridge simulation is defined and controlled within the script. For the designer of the script, it offered the best option for establishing the structural concept (computational springs with a dynamic relaxation solver), testing it through a very specific concept and understanding all the inter-relationships between parameters.

14
1 1.1-10 1.1-11 precedents 1.1.2 Computational Form-Finding

1.1-10

CarefulSlug by Soda from Sodaplay. com. Web environment allows for the construction of tensioncompression structures that undergo influence of gravity and friction. Underlying solver is based on computational springs developed in Java.

1.1-11

Structure developed in SW3D (sw3d. net). Using the Sodaconstructor library, SW3d, created by Marcello Falco, expands the functionality into three dimensions creating an environment where kinetic structures can be interactively generated and edited.

1.1-12

Heatherwick Studio, Rolling Bridge, Paddington Basin, London, 2004. The kinetic steel-framed bridge transforms through the hydraulic expansion and contraction of various struts in the truss-like structure.

1.1-13

Sam Joyce, Rolling Bridge simulation, School of Architecture and Civil Engineering, University of Bath, 2008. The program simulates the physical behaviour of the Rolling Bridge, comparing the abstracted physics of the spring system with the actual performance in the bridge

15
1.1-12 1.1-13

1.1-14

Description of the shared homebox genes between a fruit fly and a mouse.

1.1-15

Fate map for the development of the fruit fly wing. Diagram A depicts the layout of genes. Diagram B shows the related morphological development.

1.1-16

Initial layout of particles with double-array ordering system.

1.1-17

Fate map describes the specification of geometry (springs) and association (various connection types between particles).

1.1-18

Morphological description of fate map described in Figure 1.16.

1.1-19

Samples of the toolkit (scripted functions in Processing) which develop and specify form. Most functions simply address the ordering system in various waysassociating particles within a single network of springs and/or across two networks of springs. Additional variables such as spring-strength provide for further specification and adaptation of form.

precedents

1.1.3 Articulation of Computational Form through Fate Map

1.1.3 Articulation of Computational Form through Fate Map

Michael Hensel hypothesizes about a computational process “extending the concept of the material system by embedding material characteristics, geometric behavior, manufacturing constraints and assembly logics.”1 This is the goal of a computational design process for cable net structures. An examination of the field of evolutionary biological development offers models for how integration of a high number of components and functions can be realized through simple, repetitive means.

Evolutionary Developmental Biology explains growth and development through the following: modularity, repetition, switching, and geography.2 The interconnection of these is what gives the process its robustness and extensibility. The functioning of the homeobox presents clear processes for how variation can be generated with the same set of tools.

Moving through the stages of development, the challenge is how to track and control variation from the initial setup through to the final form. Abstracting processes described in evolutionary developmental biology provide the logic for proceeding through the steps of geometric form development. In defining the base geometric unit, extensibility is primary. Embryological development works with several primary materials to realise multiple structural types (both tension and compression systems). Instead of prescrib-

ing multiple context-independent components, a single unit should be able to develop into various material types.

The fate map, a representation technique for tracking cell development, is a helpful concept in managing form specification in complex systems. The control of articulation can only be gained when the initial setup can be connected to the final form. In the spring-based system, the network arrangement is akin to the fate map, the particle being equivalent to the cell. A logical ordering system for the components of the map allows for easy determination of where particular articulations in form occur, in what contexts, and which transformation functions are applied.

1 Hensel, M and Menges, A, Inclusive

Performance: Efficiency versus Effectiveness, Versatility and Vicissitude: Performance in MorphoEcological Design, 2008, Volume 78 No 2, 54-63.

2 Carroll, S, Endless Forms Most Beautiful: The new Science of Evo-Devo and the Making of the Animal Kingdom. London, Orion Books Ltd, Phoenix, 2007.

16
1.1-14 1.1-15
B.
A.
3 0 1 0 4 2 0 0 0 0 0 (2 (3 (4 (1 (3 (1 (4 (0 (2 (0 1 3 2 4 5 0 i 7 6 1 0 3 j 4 2 6 5 1 (7 4 0 (2 3 6) 5 1 (7 4 0 (2 3 6) 5 1 (7 4 0 (2 3 (7 3 5 1 6) 2 0 4 (7 6) 5 4 3 (2 1 0 2 3 4 1 (3) (1) (4) (0) (2) (3 (1 (4 (0 (2 3 1 4 0 2 3 1 4 0 2 3 1 4 0 2 (3 (1 (4 (0 0 (2 3 1 4 0 2 5 0 4 0 1 7 3 1 6 2 2 1 3 4 2 7 0 2 1 4 0 5 3 6 1 3 4 2 7 0 2 1 4 0 5 3 6 (7) (0) (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (2) (3) (3) (5) (1) (6) (2) (0) (4) (6) (5) (4) (3) (2) (1) (0) (2) (3) (4) (1) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (0) (2) (3) (1) (4) (0) (2) (7) (7) (7) (4) (0) 5 0 4 4 0 1 3 7 3 1 6 2 2 ( ) ( ) (j+1) start end (j+0) (i+1) (i+1) 5 4 0 7 3 1 6 2 start open-edge connectivity closed-edge connectivity end 5 0 4 4 0 1 3 7 3 1 6 2 2 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 12 11 14 10 8 13 9 19 18 0.0 0.1 0.2 0.3 21 17 15 20 22 23 16 5 0 4 4 0 1 3 7 3 1 6 2 2 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 12 11 14 10 8 13 9 0.0 0.1 0.2 17 15 16 18 19 23 16 20 22 17 21 0 1 2 4 3 0 1 2 4 3 0 1 2 4 3 0 1 2 4 3 11 12 9 13 15 10 14 4 5 2.3 2.2 2.1 2.0 2 6 8 3 1 0 7 17 1.1-17 1.1-19 1.1-18 1.16 DEVELOPMENT MAP TOOLKIT INITIAL PARTICLE MAP MORPHOLOGY NET class makeCABLE class nodeSTITCH class

1_precedents

Architects have the ability to alter our perception of a space (environment) through the use of physical material.

Often the relation between the geometry and the material is not immediate. Especially in the current state of fabrication a lot of materials are “standardized”. Not only in performance, but also dimension, geometry and size. Shape and material property are highly determined by industry standards and fabrication methods. These are treated as an additional layer. Sometimes this choice is based on certain material characteristics (transparency etc.) or a specific performance criteria (high isolation, high strength etc.). In rare cases does the material choice feed back into the actual geometry a significant degree. “Structural Analysis” operates as a re-dimensioning process (widen beam, thicken floor plate, re-dimension column) altering a very limited set of input parameters (thickness, width etc.) of the initial, individual element. The agglomeration of these elements make up the “architecture”. A current trend is the design of Information systems that help managing the vast amount of elements (BIM), but the process becomes very elaborate and problem of detached geometry and structure remain. This ultimately leads to a very limited way in which we, as architects, allow ourselves to manipulate an individual’s perception of a certain space.

Tensioned nets are one example of a basic material system. Their shape is determined, by the forces acting upon the whole structure and each element

used within the net contributes to this behavior. The physical process in which a net takes shape under the application of external forces is usually referred to as form finding.

Not only is this process interesting for architects to look at, because of the fact that the resulting form / net geometry has a certain degree of validity or inherent truth, which other models that are not based on form finding methods lack.

A fascinating aspect of these design investigation systems is the amount of inputs needed to re-define the shape of the model. Moving one anchor point of a net to another location in space can have significant repercussions on the form. This means, that the architect / designer can actually explore different shapes, of the same validity (regarding the distribution of physical forces) with very little effort. At least in a model.

But the model has to be able to account for these alterations intended by the designer. A certain material’s elasticity might prevent one from exploring a certain configuration of anchor point locations. The only intervention left for the designer in this case (besides disregarding the idea) is to either change material (with more elasticity) or add material. Both options result in the rebuilding of the net (model), which is a time-consuming procedure. Something that we experienced during our first form finding investigations of tensionactive nets during EmTech’s core studio in the fall of 2008.

Without being specialists in the construction and

dimensioning of nets we were able to observe during this important period of time of our studies, that all nets have certain similarities. Their tendency to take shape into what would mathematically be described as a minimal surface was particularly interesting, as this was a property inherent to the material system, but never “intended” by us, the designers.

It was our interest to expose the drivers / actuators for these common properties amongst nets and membranes in order to explore net configurations that would expand the vocabulary of spatial perception of these architectures thus far.

In order to use nets as space-making devices we focused on net topologies that are not very common and rarely used for projects at an architectural scale. Usually architects and engineers investigate the use of planar net topologies. These nets are, by nature, “flat”. Their inherent capability to circumscribe a space is limited. These planar nets have multiple boundaries (equivalent to “sides” of a polygon in geometry) and are mostly used to define form-active roof structures - which is logical, if the underlying topology is understood.

By “closing” the net in 1 dimension, or in simpler terms, by transforming the planar topology into a cylindrical one, the boundary conditions are reduced to only 2. Furthermore a directional of the net is generated that was previously not present. Whereas the planar nets (objects) allow the spectator (subject) to define his position in relation to the object (“I am under / above the net”), the cylindri-

18
1.11 1.10 1.12

cal net topology generates spatial conditions that can be described as being “inside” of the net. This new characteristic led to a search for ways of emphasizing or alleviating degrees of enclosure enforced by a cylindrical tension active net system.

In order to pursue this exploration of spatial effects of cylindrical nets on their environment it was necessary to develop a digital form finding method. Embedded into this method needed to be information about structure, performance and characteristic of each element augmenting the system. Implementing a method for accessing all data for fabrication was necessary, as our intention as architects was not to develop hypothetical computational mesh geometries, but actual physical architecture manifested through a digital method of form finding.

A lightweight vector-based analysis tool simulating the perception of a net’s density from different points of views was developed. By measuring degrees of enclosure of cylindrical nets this analysis tool aims at a computational method for defining a net’s space-making capacities as well as its potential to serve as a protective shield against external forces (simulated through vectors) such as sun, rain or wind.

1.10

cable-net structure for a cooling tower for Balcke in Germany built in 1972. Consulting by Schlaich engineers. 142 meters in diameter, 181 meters pylon height.

1.11 fishing net in China. an example of a net with a medium mesh size.

1.12 membranes can be considered very tight nets. As tension-active elements they are used for tents to protect against wind, rain and sun.

1.13

net installation at the Johann Wolfgang von Goethe University of Frankfurt by Hannes Schewertfeger. 90 squaremeter area.

19
1.13
20 1.2-1
1.2_Computational Networks

A spring-based particle system simulates the tension and compression within a network of connected springs. The overall connectivity between the elements forms the net-topology. In order to simulate multiple net configurations quickly a method derived from the investigations in evo-devo was developed.

Every computational net is built through a logic map (2-dimensional array), which determines potential size & density of the net through its dimensions.

In processing Springs are inserted based on the logic map, that determines Particle-to-Particle relations, connectivity and the overall net topology.

Switches are accessed to fix or unfix the boudaries of the nets. The combined use of these switches and the logic map allows to simultate multiple net variations easily and quickly, while the method of how they were constructed maintains absoluetly transparent and accessible (see chapter 2.1. embedded fabrication). In the process of dynamic relaxation the predetermined network topology takes shape through the simulation of the forces within the system.

21
1.2-1 Hybrid Net Example of Particles arranged in a cylindrical tensionactive network of springs with computational springs in compression (orange). Simulated in processing.

1.2.1. Network and Geometric Topology

The mapping of nodes describing pathways for communication and data transfer is the basic definition of network topology, where nodes are considered as devices constituting a computer network.

Examples of base network topologies are shown in Figure 1.2-2. This is a useful description for how a particular pattern (or a systematic hybrid of multiple patterns) for the association of nodes can be constructed to form an interconnected continuous network. It is also important to clarify that network topology does not consider position. It refers only to the strategy for arrangement of the devices that are engaged in the network environment. This explains the difference between a logical topology (of associations) and physical geometry (of position).

Geometric topologies have limits to the types of geometries that they can construct. The repercussions are examined here both in terms of geometry performance and in connection to its potential for the definition of the boundaries of architectural space. In the cable net experiment, selecting the logic akin to the “ring” topology, when transformed into 3 dimensions, means for a continuous surface that can define various degrees of bounded space.

The appropriateness of the “ring” topology is evident when compared to other network topology types. It makes sense that the “line” topology expands to an open surface defined by 4 edges, where the “ring” topology easily transforms to a 1-dimensional continuous surface, bounded by 2 edges. (Figure 1.2-4) It would seem that forming space through a series of open surfaces involves more effort, physically and computationally. Surfaces are either transformed to define a continuous boundary (with subsequent geometric issues as mentioned earlier) or coupled with multiple surfaces to eventually have a clear delineation of space. The other topologies, cylindrical and torus based, more quickly and clearly begin to define the boundaries and orientation of a particular space (Figure 1.2-4), and all with a single strategy.

1.2.2 Spring-Based Particle Systems

Particle systems are simple physics models that only deal with point-masses and forces. That means that - as opposed to rigid-body models - objects in particle systems do not occupy any volume. Their behaviour is quite simple, but powerful. (Figure 1.2-8)

Particles

A particle is an object with a location and a mass. It is acted upon by any number of forces. The greater a particle’s mass, the more is required to accelerate it.

A particle’s location in space is determined by the forces acting on it, unless the particle’s position is declared as “fixed”. This boolean value indicates whether a particle’s position is being controlled manually or by the forces in the system. A fixed particle can be attached to a single point in space, or the mouse, or may be moved simply by (re-) setting its position. Often a whole system of particles will be attached to a single fixed particle and will move with it. In order to be a solvable system from a structual point of view the particle system needs to contain fixed particles. Springs Springs are forces that exist between 2 particles. The force enacted by the spring pulls or pushes the 2 particles together or apart with a force proportional to the distance of their separation. A spring’s performance is defined by the variables of rest length, spring strength, and damping.

Rest length is considered to be the length of a spring at which it no longer pulls or pushes. The strength of a spring determines how hard it pulls / pushes when it is stretched / compressed. The amount of Damping controls the energy absorbed by the spring as it bounces (dynamic relaxation) Damping is necessary in order to prevent the spring from oscillating for too long.

Hooke’s Law

Hooke’s Law is a solver for the forces in computational springs. It determines the forces on two particles connected by a spring. If the spring’s current length during the process of dynamic relaxation is greater than its Rest length then the force of the spring acts to pull the two particles together. If the spring length is less than the rest length, then the force acts to repel the two particles. Both of these forces act along the vector defined by the two particles. The force on a particle “a” due to particle “b” is given by:

Where ks is the spring’s strength, kd is the damping constant and r is the Rest length.

To solve the accumulation of vector forces such as in a network of interconnected springs, the RK Solver or Euler Solver is typically used.

1.2.3 Springs in Processing

For the “Form-Finding and Structural Optimization: Gaudi Workshop” at the MIT in 2004 conducted by Prof. Ochsendorf, Simon Greenwold developed a Particle System written in the Processing - a Java-based computer programming language

This programming language, which is available for free download at www.processing.org, has gained a high degree of popularity far beyind the initially targeted community of artists. The software is used by engineers (for example: Chris Williams) and by

architects at workshops like Smart Geometry. Axel Killian, who took part in MIT’s workshop, provided the particle system library for processing and helped in getting started with the first particle systems.

When using the Particle System, the initial setup is developed through the creation of an array of particles. Each particle carries values for mass and position, where force can acts to negotiate the particle’s final position. Force, in this case, comes from a linear network of springs. The position of a particle can be calculated through the simple equation of force (f) = mass*acceleration, where f is the vector sum of all forces.

The step of enacting external forces and resolving the internal flow of forces drives the final positioning of the particles. With the spring system, this happens through the combination of the spring solver and the resulting computational process of dynamic relaxation. Dynamic relaxation is the current standard for realizing the equilibrium state of tension active systems through iterative steps of vector oscillation. It is important to see the distinction between the physical topology defined through dynamic relaxation and the user-defined network topology defined through the 2-dimensional array of particles: the logic map.

computational networks 22

Network Topologies

Examples of logical network topologies depicting various patterns for connecting network devices. Logical topology describes association not spatial position.

star line tree fully connected mesh bus ring 23 1.2-2
1.2-2

1.2-3 various physical prototypes of cylindrical nets were built. The development of a spatial network topology is shown through a series of physical modeling experiments with tensioned net structures. With the intention of forming a system that when translated into its physical topology arranges surface, structure, and space, this model is an example of a typical “formfinding” process. The interesting aspect is in the link between the inherent geometric logic of the initial loop, as a closed “ring” (bottom left), and the spatial form constructed when activated into a physical topology (top middle). This connection between material and space in the most rudimentary components of the design system is a primary necessity in the design process that solves for integrated conditions of surface, space, and structure.

24 1.2-3
1.2.1 Network and Geometric Topology computational networks

1.2-4

Geometric Topologies by increasing in topological dimensionality (curves have 1-dimension, usually described by the parameter “t”, surfaces are 2-dimensional, UV-space) of a network of nodes as shown on the vertical axis, different geometries can be formed. By closing their open ends, respectively edges, higher degrees of enclosure can be achieved. In 3-dimensional geometry the sphere / torus have the highest degree of enclosure. Based on experiments with cylindrical nets, a topology that introduces directionality and a certain degree of enclosure to the planar topology by very simple means (closing 1 edge) was chosen as a component for the construction of different net morphologies.

25 degree of enclosure array / geometric dimensionality 2D 1D NULL OPEN point line open surface ring cylinder torus / sphere edge condition continous condition regular condition 1D CLOSED 2D CLOSED 1.2-4

1.2-5 programming a computational chain through the linear connection of multiple (10) particles in a singular (1D) “for”-loop a chain between particles is formed. By inserting computational springs between the particles, the behavior of a physical chain can be simulated (in real-time). One end of the chain (p2) is fixed to a specific location in Cartesian Space whereas the other end of the chain is controlled via a particle that is directly connected to the user’s mouse position (ScreenX, ScreenY). The visual result of this small script displayed here is shown in

1.2-8

Computational Chain Model

Dynamic Relaxation of Spring system in Processing. A linear network of springs connects 10 particles. The last particle’s position in the chain, is controlled via the position of the user’s mouse in the processing interface (dashed circle). The first particle is fixed (orange circle). Dynamic Relaxation resolves system to equilibrium state of forces. The system is able to track which spring is in tension (blue) or compression (orange) within the system. With increasing distance between the fixed particles, the springs increase their tension force.

1.2-9

particle system diagram besides rest Length, a spring has 2 other parameters: strength and damping. Particles, the other important part of a Particle system besides forces, can be fixed to a specific location in space (XYZ), but in computationally simulated nets, most particles negotiate their position through the forces acting upon them. In order to simulate the behavior of tension-active systems, only Particles and Springs are necessary - even though a Particle System consists of more parameters. Boolean values equal “switches” of a “fate map” in biological models in function.

particle system

F

false true fixed mass position pos.X float float boolean float float pos.Y pos.Z gravity drag springs strength restLength float float damping force library classes parameters parameter options parameter type particle
26 1.2-5 1.2-8 1.2-9
frame 0 frame 12 frame 24 frame 36
1.2
.2 Spring-based Particle Systems computational networks

1.2-7

CADENARY software

A software programmed and developed by Axel Killian at the MIT during a workshop for digital formfinding experiments based on Gaudi’s hanging chain models. The software was written in processing and utilizes Simon Greenwold’s particle System written for this workshop. The software focusses on real-time user interaction through an interface for the digital simulation of linear and planar networks of hanging chains. It can be downloaded and explorer at www.designexplorer.net/

1.2-10

Hooke’s Law

a law in physics which calculates the forces within a spring.

The 2 most important stages in which an active spring can be observed, are shown in this diagram: tension and compression. If a spring is stretched beyond its rest Length, it will act as a tension element (top / orange). If the spring is forced into a length below its rest Length, it acts as an compression element. The mass of the particles connected to each end of the spring cause it to oscillate past its rest Length until a final position / length is determined with regards to all other forces in the network (computational form finding).

t v FT v FT TENSION COMPRESSION v(t) = v cos(ωt + Φ) * * max t 0 0 restLength horizontal velocity x(t) = x sin(ωt + Φ) max horizontal position A B B F = -k x = -45,42 N F = -k x = 41,57 N t t 0 0 A false true fixed mass position pos.X float float boolean float float pos.Y pos.Z gravity drag springs strength restLength float float damping force library classes parameters parameter options parameter type particle particle system F springs fixed particles 27 1.2-6 1.2-7 1.2-10 frame 48 frame 60 frame 72 frame 84

1.2-11 logic map

The logic map is a 2-dimensional array in processing. 2-dimensional arrays are a very common programming device and can be seen as simple ordering systems. Technically they are most efficiently generated through the use of a double “for-loop” in the script, where the outer “for”-loop determines the “height” of the logic map (even though it is a nongeometric , topological map) and the inner “for”-loop controls the width” of the logic map. The logic map can be used for multiple purposes and the method of generating it is common to all the experiments undertaken as a part of the research - not only in this chapter, but throughout the entire dissertation.

In this basic example, the logic map is used to create particles and assign them a unique ID based on their location on the logic map (top diagram). Furthermore, the map is used to determine which particles are fixed particles (middle diagram - orange particles are fixed). In this case, Particles at the bottom (i=0) and top (i=4) of the logic map are, through a simple “IF”-statement, declared as “fixed” parts of the net. In a third and last step, springs are inserted into the logic map. The method in which particles are connected via springs needs to be determined once and is then automatically repeated throughout the net (like most things with a “for”-loop). The particles a at the sides of the 2-dimensional array, were connected back to the beginning in order to build a cylindrical as opposed to planar net. Computationally , all these events take place in 1 double “for”-loop.

A 2-dimensional cylinder is difficult to draw (1.2-11 - bottom) and can be easier understood as a 3-dimensional geometry (see next figure).

1.2-12

Shows the geometrical output of the combined inputs of the logic map in diagram 1.2-11 . The additional information as opposed to the logic map is, that every particle has been assigned to a specific XYZ-location in space. At this point it could be anywhere, but for purposes of readability we created a “cylindrical mesh”. Highlighted is the edge condition of the logic map

1.2-13 topological symbols are used to identify the underlying topology of a cylindrical net geometry, because it becomes more and more difficult to identify the inherent topology of a net, once the process of dynamic relaxation has started. In this case, all the characteristics of the net (size, connectivity, edge connectivity) built through the logic map in 1.211 are maintained

particles & ID

particles & ID

(7) (7) (7) (1) (2) (3) 6 (5 1) 7) 4) 0 (2 3 6 (5 1) 7) 4) 0 (2 3 6 ( 1) ) 4) 0 (2 3 (7) 3 (5 1) 6 (2 0 4) (7) 6 (5 4) 3 (2 1) 0 2 3 4 1 (3 (1 (4 (0 (2 3 1 4 0 2 3) 1) 4) 0) 2) (3 (1 (4 (0 (2 3 1 4 0 2 (3) (1) (4) (0) 0 (2) (3 (1 (4 (0 (2 1 3 4 2 7 0 2 1 4 0 5 3 6 (7) 7 (0) (4) 4 0 (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (2) (3) (3) (5) (1) (6) (2) (0) (4) (6) (5) (4) (3) (2) (1) (0) (2) (3) (4) (1) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (0) (2) (3) (1) (4) (0) (2) (7) (7) (7) (4) (0) 5 0 4 4 0 1 3 7 3 1 6 2 2 (7) (6) (5) (4) (3) (2) (1) (0) (0) (0) (0) (0) (0) (0) (0) (0) (7) (6) (5) (4) (3) (2) (1) (0) (1) (1) (1) (1) (1) (1) (1) (1) (7) (6) (5) (4) (3) (2) (1) (0) (2) (2) (2) (2) (2) (2) (2) (2) (7) (6) (5) (4) (3) (2) (1) (0) (3) (3) (3) (3) (3) (3) (3) (3) (7) (6) (5) (4) (3) (2) (1) (0) (4) (4) (4) (4) (4) (4) (4) (4) ( ) (i) (j+1) (j+0) (i+1) (i+1) 5 0 4 4 0 1 3 7 3 1 6 2 2 start open-edge connectivity ( ) ( ) (j+1) (j+0) (i+1) (i+1) typical connectivity array size closed-edge connectivity end (7) (7) (7) (1) (2) (3) 6) 5 (1 (7 (4 0) (2 3) 6) 5 (1 (7 (4 0) (2 3) 6) (1 ( (4 0) (2 3) (7 3) 5 (1 6) 2 0) (4 (7 6) 5 (4 3) (2 (1 0) (2 (3 (4 (1 (3 (1 (4 (0 (2 3) 1) 4) 0) 2) (3 (1 (4 (0 (2 3 1 4 0 2 3) 1) 4) 0) 2) (3 (1 (4 (0 (0 (2 3 1 4 0 2 1 3 4 2 7 0 2 1 4 0 5 3 6 (7) (7) 7 (0) (4) 4 0 (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (2) (3) (3) (5) (1) (6) (2) (0) (4) (6) (5) (4) (3) (2) (1) (0) (2) (3) (4) (1) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (0) (2) (3) (1) (4) (0) (2) (7) (7) (7) (4) (0) 5 0 4 4 0 1 3 7 3 1 6 2 2 (7) (6) (5) (4) (3) (2) (1) (0) (0 (0) (0) (0) (0) (0) (0) (0) (7) (6) (5) (4) (3) (2) (1) (0) (1 (1) (1) (1) (1) (1) (1) (1) (7) (6) (5) (4) (3) (2) (1) (0) (2 (2) (2) (2) (2) (2) (2) (2) (7) (6) (5) (4) (3) (2) (1) (0) (3) (3) (3) (3) (3) (3) (3) (3) (7) (6) (5) (4) (3) (2) (1) (0) (4) (4) (4) (4) (4) (4) (4) (4) (j) (i) (j+1) (j+0) (i+1) (i+1) 5 0 4 4 0 1 3 7 3 1 6 2 2 start open-edge connectivity (j) (i) (j+1) (j+0) (i+1) (i+1) typical connectivity array size closed-edge connectivity end (7) (0) (0) (7) (7) (2) (1) (1) (3) (2) (3) (0) 6 (5 1) 7) 4) 0 (2 3 6 (5 1) 7) 4) 0 (2 3 6 (5 1) 7) 4) 0 (2 3 (7) 3 (5 1) 6 (2 0 4) (7) 6 (5 4) 3 (2 1) 0 2) 3) 4) 1) (3 (1 (4 (0 (2 3 1 4 0 2 3) 1) 4) 0) 2) (3 (1 (4 (0 (2 3 1 4 0 2 (3) (1) (4) (0) 0) (2) (3 (1 (4 (0 (2 1 3 4 2 7 0 2 1 4 0 5 3 6 (0) (0) (7) (7) 7 (0) (4) (0) (4) 4 0 (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (2) (3) (3) (5) (1) (6) (2) (0) (4) (6) (5) (4) (3) (2) (1) (0) (2) (3) (4) (1) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (0) (2) (3) (1) (4) (0) (2) (7) (7) (7) (4) (0) 5 0 4 4 0 1 3 7 3 1 6 2 2 (7) (6) (5) (4) (3) (2) (1) (0) (2) (2) (2) (2) (2) (2) (2) (2) (7) (6) (5) (4) (3) (2) (1) (0) (3) (3) (3) (3) (3) (3) (3) (3) (7) (6) (5) (4) (3) (2) (1) (0) (4) (4) (4) (4) (4) (4) (4) (4) ( ) ( ) (j+1) (j+0) (i+1) (i+1) 4 3 2 start open-edge connectivity ( ) ( ) (j+1) (j+0) (i+1) (i+1) typical connectivity array size closed-edge connectivity end 28 1.2-13 1.2-12 1.2-11
j i
1.2.3 Springs in Processing computational networks

Spatial Networks

This initial experiment is based on physical experiments undertaken with cylindrical nets. A cylindrical network topology has a certain potential for enclosing and orienting space where the geometric units that construct the network have a direct correlation with a material strategy. The development of a spatial network topology is shown through a series of physical modeling experiments with tensioned net structures (figure 1.2-16) , preceding the design of the Cable Net Installation in the next chapter. With the intention of forming a system that when translated into its physical topology arranges surface, structure, and space, the “ring” network topology is translated into a 3-dimensional network. In figure 1.2-16, the system is defined by 5 closed loops, where each loop is 30 cm in perimeter and each pair of loops are interwined 5 times. This experiment delineates clearly the translation from a simple network topology into a physical topology. The loop dimension and number of “intertwinings” describes the variables for the system. This model is an example of a typical “form-finding” process. But, the interesting aspect is in the link between the inherent geometric logic of the initial loop, as a closed “ring”, and the spatial form constructed when activated into a physical topology.This connection between material and space in the most rudimentary components of the design system is a primary necessity in the design process that solves for integrated conditions of surface, space, and structure.

1.2-16

formfinding cylindrical nets

In this physical experiment, the Initial network topology is transformed into a tensioned net structure.When tension is added, the location of the nodes is determined and also descriptive of the flow of forces through the entire array of loops. Computationally-based Spatial Networks

1.2-14

net geometry

the depicted cylinder uses a larger logic map, but maintains all characteristics desribed previously. The image shown is comparable to 1.2-12, with the significant difference, that the lines draw in 1.2-12 for diagrammatic reasons are now substituted by actual, computational springs. The images shows the cylindrical net at frame 0 of the dynamic relaxation process from the out- and inside.

1.2-15

net morphology at frame 1000 the springs have shaped the net into its final form. Geometry is altered / Form is found. Both through the application of forces implied by springs, that shape the now tension-active system.

29
1.2-16 1.2-14 1.2-15

1.2-17 logic map for planar net

Through a simple alteration of the logic map, a different type of net can be simulated. In this case a planar net with 4 fixed particles at its corners and a slightly different way of building the network of springs through particle associations (bottom): The springs are now running from left to right and top to bottom (of the map). This has repercussions on the behavior of the net, which, if simulated with a high density (in this case “9”) resembles that of a membrane. The chosen network is more closely related to the Weft and Warp of a membrane (different structural behavior in different directions, because of weaving manufacturing process).

1.2.4 Cylindrical Net Toplogy

These first sets of experiments were conducted in order to intially understand how computational springs are effective solvers for the simulation of physical forces. Beyond that. the main interest was that of connecting these simple elements into larger networks to simulate the behaviour of physical, cylindrical nets. By utilizing a two-dimensional array of particles as a logic map for building the topological network of springs, a simple underlying method was achieved. This model could be accessed at later stages of the design of cylindrical nets (see chapter 2.1.”embedded fabrication”).

Understanding how the topological associations between particles, through the connectivity defined in the logic map, affect the overall geometry in the process of dynamic relaxation to simulate the behaviour of physical nets made the rebuilding of physical prototypes for every new investigation redundant.

Spatial Networks

These first physical experiments use a cylindrical network topology. The nets resulting from these topological conditions have a certain potential for enclosing and orienting space where the geometric units that construct the network have a direct correlation with a material strategy

The development of a spatial network topology is shown through a series of physical modeling

experiments with tensioned net structures, preceding the design of the Cable Net Installation. With the intention of forming a system that when translated into its physical topology arranges surface, structure, and space, the “ring” is translated into a 3-dimensional, cylindrical network. This model is an example of a typical “form-finding” process. The interesting aspect is in the link between the inherent geometric logic of the initial loop, as a closed “ring”, and the spatial form constructed when activated into a physical topology.This connection between material and space in the most rudimentary components of the design system is a primary necessity in the process that solves for integrated conditions of surface, space, and structure.

Computationally-based Spatial Networks

Other types of systems can be engaged working with the same directness, responding to inputs of space, material and structure. Considering fabric (membrane) materials as a part of the cylindrical net morphologies provides for further definition and articulation of space, while also working reflexively with the structure of the system.

It is through these types of tools and the understanding of their underlying logics through which we intend to realize architectures of multiple, specific, and interrelated concerns of material and space.

Surfaces, Boundaries, and Continuity

In the Cable Net Installationshown in the next chapter, the main characteristic of architectural space is one of continuity. Continuity, as we choose to further characterize it, is that of a series of spaces that are both interconnected yet distinct described by the most minimal means of material and structure.

The purpose for these initial experiments is the establishment of parameters in the computational system (the geometric topology, the springs, the material, the structure, and the fabrication) that allow a simulation of physical behaviour of cylindrical nets.

This is achieved by validating the computationally generated (logic map) nets through comparisons to physical prototypes. Valdation is not achieved through the simulation of highly specific (structural) conditions, but through the observation and modelling of the behaviour of these tension active systems.

Once the capabilities are understood, the computational process can be expanded to test and evolve relationships that include these more specific characteristics of space. It could be argued that in the design possibilities of this type of material system, examination in built form is necessary to evolve the method, the pressures on the system, and the outcome.

(7) (0) (0) (7) (7) (2) (1) (1) (3) (2) (3) (0) (2 (2 6 1 7 0 (2 2 (3 (4 (2 2 (3 (4 (2 1 3 4 2 0 2 1 4 0 3 (0) (0) (7) (7) 7 (0) (4) (0) (4) 4 0 (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (2) (3) (3) (1) (2) (0) (4) (4) (3) (2) (1) (0) (2) (3) (4) (1) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (0) (4) (0) 0 4 4 0 1 3 3 1 2 2 4 3) (2 1) 0 (0 0) 0 0) 0) 4 3) (2 1 0 (1 1) 1 1) 1) 4 3) (2 1 0 (2 2) 2 2) 2) 4 3) (2 1 0 (3 3) 3 3) 3 4 3) (2 1 0 (4 4) 4 4) 4 ) ( (j+1 (j+0 (i+1 (i+1 0 4 4 0 1 3 3 1 2 2 start open-edge connectivity ( ) (j+1 (j+0) (i+1 (i+1) typical connectivity array size closed-edge connectivity end 1.2-17 30
type 2 type 1 1.2.4 Cylindrical Net Topology computational networks

1.2-18 membrane component

Based on physical experiments with membranes a component consisting of 2 minimal-hole membranes rotated by 180 degrees was developed. The comprehension of the mechanisms at work led to the development of a similar computational net component.

1.2-19 computational planar net (type1, type 2 & type6) by accessing the logic map, a catalogue of 6 different palar net components was developed. Even though never used, these elements show the potential of understanding the logic map as a device for building, accessing and altering net geomentries.

1.2-20 logic map of type 6 by deleting / not generating particles in specific locations, interesting spacial conditions, such as minimal holes can be achieved / articulated.

1.2-21 meta nets understanding the potential for the articulation of space through the use of different net topologies is a important challenge for the designer. Shown is a cylindrical meta-net, with planar components, that feed back into the shape of the architecture.

31 1.2-19 1.2-18 1.2-20 1.2-21 1 3 4 2 0 2 1 4 0 3 (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (3) (3) (1) (2) (0) (4) (4) (3) (2) (1) (0) (2) (3) (4) (1) (3) (1) (4) (0) (2) (3) (1) (4) (0) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (0) (4) (0) 0 4 4 0 1 3 3 1 2 2 4) 3 (2 1 0 (0 0 0) 0 0 4) 3 (2 1 0 (1 1 1) 1 1 4) 3 1 0 (2 2 2 2 4) 3 (2 1 0 (3 3 3 3 3 4) 3 (2 1 0 (4 4 4 4 4 0 4 4 0 1 3 3 1 2 2
6
type

2 EXPERIMENTS AND DEVELOPMENT

2.1 Embedded Fabrication

2.1.1 Cylindrical Transformations

2.1.2 Mapping of Computational Cylindrical Net

2.1.3 Data Mining for Fabrication through Node ID

2.1.4 Spatial Articulation of Net

2.1.5 Evaluating Cable Net Installation

2.2 Topologically Defined Net Components

2.2.1 Component Systems for Form-Found Structures

2.2.2 Subdivision Algorithm for Cellular Framework

2.2.3 Single Cell Net Parameters

2.2.4 Multiplication and Association of Net Components

2.3Threshold Conditions

2.3.1 Comparing Actual Density and Perceived Density

2.3.2 Computational Threshold Anaylsis

2.3.3 Extended Vector-Based Analyses

32
33

2.1 Embedded Fabrication

B3_id5,9 L4:L9 B6_id2,9 L7:L9 B10_id2,11 L11:L9 B11_id3,12 L12:L9 B15_id7,16 L16:L9 B9_id1,10 L10:L9 B4_id4,9 L5:L9 B14_id6,15 L15:L9 B7_id1,9 L8:L9 B13_id5,14 L14:L9 B2_id6,9 L3:L9 B5_id3,9 L6:L9 B8_id0,9 L9:L9 B0_id8,9 L1:L9 B16_id8,17 L17:L9 B1_id7,9 L2:L9 B12_id4,13 L13:L9 B12_id4,12 L12:L8 B1_id7,8 L1:L8 B16_id8,16 L16:L8 B10_id2,10 L10:L8 B5_id3,8 L5:L8 B11_id3,11 L11:L8 B4_id4,8 L4:L8 B6_id2,8 L6:L8 B2_id6,8 L2:L8 B13_id5,13 L13:L8 B7_id1,8 L7:L8 B0_id8,8 L0:L8 B8_id0,8 L8:L8 B15_id7,15 L15:L8 B14_id6,14 L14:L8 B3_id5,8 L3:L8 B7_id1,7 L6:L7 B4_id4,7 L3:L7 B6_id2,7 L5:L7 B5_id3,7 L4:L7 B13_id5,12 L12:L7 B14_id6,13 L13:L7 B10_id2,9 L9:L7 B15_id7,14 L14:L7 B12_id4,11 L11:L7 B16_id8,15 L15:L7 B3_id5,7 L2:L7 B11_id3,10 L10:L7 B8_id0,7 L7:L7 B1_id7,7 L0:L7 B0_id8,7 L20:L7 B2_id6,7 L1:L7 B12_id4,10 L10:L6 B2_id6,6 L0:L6 B16_id8,14 L14:L6 B0_id8,6 L19:L6 B3_id5,6 L1:L6 B14_id6,12 L12:L6 B4_id4,6 L2:L6 B7_id1,6 L5:L6 B5_id3,6 L3:L6 B8_id0,6 L6:L6 B15_id7,13 L13:L6 B10_id2,8 L8:L6 B6_id2,6 L4:L6 B11_id3,9 L9:L6 B13_id5,11 L11:L6 B1_id7,6 L20:L6 B16_id8,13 L13:L5 B6_id2,5 L3:L5 B13_id5,10 L10:L5 B4_id4,5 L1:L5 B0_id8,5 L18:L5 B14_id6,11 L11:L5 B10_id2,7 L7:L5 B2_id6,5 L20:L5 B5_id3,5 L2:L5 B1_id7,5 L19:L5 B7_id1,5 L4:L5 B11_id3,8 L8:L5 B8_id0,5 L5:L5 B15_id7,12 L12:L5 B12_id4,9 L9:L5 B3_id5,5 L0:L5 B7_id1,4 L3:L4 B8_id0,4 L4:L4 B13_id5,9 L9:L4 B6_id2,4 L2:L4 B10_id2,6 L6:L4 B2_id6,4 L19:L4 B3_id5,4 L20:L4 B15_id7,11 L11:L4 B11_id3,7 L7:L4 B16_id8,12 L12:L4 B0_id8,4 L17:L4 B5_id3,4 L1:L4 B12_id4,8 L8:L4 B1_id7,4 L18:L4 B14_id6,10 L10:L4 B4_id4,4 L0:L4 B1_id7,3 L17:L3 B6_id2,3 L1:L3 B8_id0,3 L3:L3 B4_id4,3 L20:L3 B14_id6,9 L9:L3 B12_id4,7 L7:L3 B3_id5,3 L19:L3 B10_id2,5 L5:L3 B5_id3,3 L0:L3 B7_id1,3 L2:L3 B0_id8,3 L16:L3 B11_id3,6 L6:L3 B2_id6,3 L18:L3 B16_id8,11 L11:L3 B15_id7,10 L10:L3 B13_id5,8 L8:L3 B0_id8,20 L12:L20 B13_id5,4 L4:L20 B3_id5,20 L15:L20 B5_id3,20 L17:L20 B2_id6,20 L14:L20 B1_id7,20 L13:L20 B8_id0,20 L20:L20 B15_id7,6 L6:L20 B7_id1,20 L19:L20 B6_id2,20 L18:L20 B12_id4,3 L3:L20 B11_id3,2 L2:L20 B9_id1,0 L0:L20 B16_id8,7 L7:L20 B14_id6,5 L5:L20 B4_id4,20 L16:L20 B10_id2,1 L1:L20 B14_id6,8 L8:L2 B13_id5,7 L7:L2 B12_id4,6 L6:L2 B15_id7,9 L9:L2 B11_id3,5 L5:L2 B6_id2,2 L0:L2 B10_id2,4 L4:L2 B0_id8,2 L15:L2 B2_id6,2 L17:L2 B1_id7,2 L16:L2 B8_id0,2 L2:L2 B7_id1,2 L1:L2 B5_id3,2B4_id4,2L20:L2L19:L2 B3_id5,2 L18:L2 B16_id8,10 L10:L2 B15_id7,5 L5:L19 B7_id1,19 L18:L19 B6_id2,19 L17:L19 B16_id8,6 L6:L19 B0_id8,19 L11:L19 B12_id4,2 L2:L19 B8_id0,19 L19:L19 B5_id3,19 L16:L19 B14_id6,4 L4:L19 B1_id7,19 L12:L19 B11_id3,1 L1:L19 B4_id4,19 L15:L19 B2_id6,19 L13:L19 B13_id5,3 L3:L19 B10_id2,0 L0:L19 B3_id5,19 L14:L19 B7_id1,18 L17:L18 B12_id4,1 L1:L18 B14_id6,3 L3:L18 B11_id3,0 L0:L18 B10_id2,20 L20:L18 B6_id2,18 L16:L18 B4_id4,18 L14:L18 B3_id5,18 L13:L18 B2_id6,18 L12:L18 B16_id8,5 L5:L18 B8_id0,18 L18:L18 B0_id8,18 L10:L18 B1_id7,18 L11:L18 B5_id3,18 L15:L18 B15_id7,4 L4:L18 B13_id5,2 L2:L18 B7_id1,17 L16:L17 B1_id7,17 L10:L17 B2_id6,17 L11:L17 B15_id7,3 L3:L17 B12_id4,0 L0:L17 B11_id3,20 L20:L17 B16_id8,4 L4:L17 B4_id4,17 L13:L17 B10_id2,19 L19:L17 B14_id6,2 L2:L17 B6_id2,17 L15:L17 B5_id3,17 L14:L17 B13_id5,1 L1:L17 B8_id0,17 L17:L17 B0_id8,17 L9:L17 B3_id5,17 L12:L17 B1_id7,16 L9:L16 B2_id6,16 L10:L16 B0_id8,16 L8:L16 B16_id8,3 L3:L16 B12_id4,20 L20:L16 B8_id0,16 L16:L16 B6_id2,16 L14:L16 B5_id3,16 L13:L16 B4_id4,16 L12:L16 B14_id6,1 L1:L16 B13_id5,0 L0:L16 B15_id7,2 L2:L16 B3_id5,16 L11:L16 B7_id1,16 L15:L16 B10_id2,18 L18:L16 B11_id3,19 L19:L16 B15_id7,1 L1:L15 B11_id3,18 L18:L15 B5_id3,15 L12:L15 B3_id5,15 L10:L15 B2_id6,15 L9:L15 B1_id7,15 L8:L15 B0_id8,15 L7:L15 B4_id4,15 L11:L15 B16_id8,2 L2:L15 B6_id2,15 L13:L15 B14_id6,0 L0:L15 B7_id1,15 L14:L15 B13_id5,20 L20:L15 B12_id4,19 L19:L15 B10_id2,17 L17:L15 B8_id0,15 L15:L15 B16_id8,1 L1:L14 B15_id7,0 L0:L14 B14_id6,20 L20:L14 B13_id5,19 L19:L14 B12_id4,18 L18:L14 B11_id3,17 L17:L14 B10_id2,16 L16:L14 B8_id0,14 L14:L14 B0_id8,14 L6:L14 B2_id6,14 L8:L14 B6_id2,14 L12:L14 B4_id4,14 L10:L14 B7_id1,14 L13:L14 B5_id3,14 L11:L14 B3_id5,14 L9:L14 B1_id7,14 L7:L14 B1_id7,13 L6:L13 B3_id5,13 L8:L13 B2_id6,13 L7:L13 B7_id1,13 L12:L13 B5_id3,13 L10:L13 B4_id4,13 L9:L13 B13_id5,18 L18:L13 B0_id8,13 L5:L13 B16_id8,0 L0:L13 B15_id7,20 L20:L13 B14_id6,19 L19:L13 B12_id4,17 L17:L13 B11_id3,16 L16:L13 B10_id2,15 L15:L13 B8_id0,13 L13:L13 B6_id2,13 L11:L13 B12_id4,16 L16:L12 B0_id8,12 L4:L12 B10_id2,14 L14:L12 B16_id8,20 L20:L12 B14_id6,18 L18:L12 B8_id0,12 L12:L12 B6_id2,12 L10:L12 B4_id4,12 L8:L12 B2_id6,12 L6:L12 B15_id7,19 L19:L12 B13_id5,17 L17:L12 B11_id3,15 L15:L12 B7_id1,12 L11:L12 B5_id3,12 L9:L12 B3_id5,12 L7:L12 B1_id7,12 L5:L12 B8_id0,11 L11:L11 B7_id1,11 L10:L11 B5_id3,11 L8:L11 B4_id4,11 L7:L11 B3_id5,11 L6:L11 B1_id7,11 L4:L11 B0_id8,11 L3:L11 B6_id2,11 L9:L11 B15_id7,18 L18:L11 B2_id6,11 L5:L11 B10_id2,13 L13:L11 B16_id8,19 L19:L11 B14_id6,17 L17:L11 B13_id5,16 L16:L11 B12_id4,15 L15:L11 B11_id3,14 L14:L11 B16_id8,18 L18:L10 B14_id6,16 L16:L10 B13_id5,15 L15:L10 B12_id4,14 L14:L10 B10_id2,12 L12:L10 B8_id0,10 L10:L10 B6_id2,10 L8:L10 B5_id3,10 L7:L10 B15_id7,17 L17:L10 B11_id3,13 L13:L10 B1_id7,10 L3:L10 B0_id8,10 L2:L10 B2_id6,10 L4:L10 B4_id4,10 L6:L10 B3_id5,10 L5:L10 B14_id6,7 L7:L1 B13_id5,6 L6:L1 B12_id4,5 L5:L1 B11_id3,4 L4:L1 B10_id2,3 L3:L1 B8_id0,1 L1:L1 B7_id1,1 L0:L1 B6_id2,1 L20:L1 B5_id3,1 L19:L1 B4_id4,1 L18:L1 B3_id5,1 L17:L1 B2_id6,1 L16:L1 B1_id7,1 L15:L1 B0_id8,1 L14:L1 B16_id8,9 L9:L1 B15_id7,8 L8:L1 B16_id8,8 L8:L0 B15_id7,7 L7:L0 B14_id6,6 L6:L0 B13_id5,5 L5:L0 B12_id4,4 L4:L0 B11_id3,3 L3:L0 B10_id2,2 L2:L0 B8_id0,0 L0:L0 B6_id2,0 L19:L0 B5_id3,0 L18:L0 B4_id4,0 L17:L0 B3_id5,0 L16:L0 B2_id6,0 L15:L0 B1_id7,0 L14:L0 B0_id8,0 L13:L0 A15_id7,6 L6:L20 A9_id1,0 L0:L20 A3_id5,20 L15:L20 A11_id3,1 L1:L19 A5_id3,19 L16:L19 A7_id1,18 L17:L18 A1_id7,18 L11:L18 A13_id5,2 L2:L18 L20:L17A12_id4,0 A15_id7,3 L3:L17 A3_id5,17 L12:L17 A5_id3,16 L13:L16 A11_id3,19 L19:L16 A13_id5,20 L20:L15 A7_id1,15 L14:L15 A1_id7,15 L8:L15 A3_id5,14 L9:L14 A15_id7,0 L0:L14 A11_id3,16 L16:L13A10_id2,15 A5_id3,13 L10:L13 A13_id5,17 L17:L12A12_id4,16 L16:L12A11_id3,15 L15:L12A10_id2,14 L14:L12A9_id1,13 L13:L12A8_id0,12 A7_id1,12 L11:L12A6_id2,12 L10:L12A5_id3,12 A1_id7,12 L5:L12 A15_id7,18 L18:L11 A3_id5,11 L6:L11 L12:L11 A5_id3,10A4_id4,10L7:L10L6:L10 A11_id3,13 L13:L10 A1_id7,9 L2:L9 A13_id5,14 L14:L9 A7_id1,9 L8:L9 A15_id7,15 L15:L8 A5_id3,8L6:L8L5:L8 A3_id5,8 L3:L8 A5_id3,7 L4:L7 A11_id3,10 L10:L7 A1_id7,6 L20:L6 A13_id5,11 L11:L6 A7_id1,6 L5:L6 A15_id7,12 L12:L5 A3_id5,5 L0:L5 A11_id3,7 L7:L4 A5_id3,4 L1:L4 A1_id7,3 L17:L3 A13_id5,8 L8:L3 A7_id1,3 L2:L3 A15_id7,9 L9:L2 A3_id5,2 L18:L2 A11_id3,4 L4:L1 A5_id3,1 L19:L1A4_id4,1 A1_id7,0 L14:L0 A13_id5,5 L5:L0 34
2.1-1

The Cylindrical Net Morphologies cable-net installation is an experiment in synthesizing processes of digital simulation and fabrication into a design system allowing for experimenting with associations between material arrangement and spatial effects.

Considering the computational system in a more direct application to architecture, the questions of material and assembly arise. The spring, once relaxed into a state of force equilibrium, has implications for the type of material that it may represent in the constructed form. Being in tension or compression has obvious influences on material specification. The fate map planning of the system provides the opportunity to link between initial setup, materiality and fabrication. In the Cylindrical Net Morphologies installation at the Architectural Association, the method of inscribing a logical identification system to the particles in the spring system allowed for ease in fabrication. Re-tracking through the network meant re-accessing the identification system through different looping protocols. The iterative for-loop mechanism was the fundamental programming method to accomplish this degree of control and production.

2.1-1

Computational model of form-found net with mapping of nodes and associations for use in fabrication

35

The Cylindrical Net Morphology is defined by the user-generated network topology consisting of computational springs where form is generated through finding an equilibrium of tension forces. The network topology is based on the 1D continuous surface (“ring” network) method of association. Embedded in this strategy is a comprehensible logic for manufacturing and assembly of any form that the system produces. Part of the potential for the network topology is to realize a specific architecture of multiple spaces defined by a single continuous boundary. Prior to all particles positions being realized, there is the opportunity to embed certain surface performance characteristics, beginning to narrow the solution space.

2.1.1 Cylindrical Transformations

The initial experiments focus on establishing the list of parameters available in the system using symmetry to test the process. Considering the context of the exhibition space, the symmetrical arrangement is transformed into an involuting cylinder through the variation of two basic functions. (Figure 9) The circular array of anchor points undergoes an anisotropic transformation into an elliptical array. It is then varied and tested to determine which end-nodes of the system attach to points along this elliptical array. This function drives the basic involution of the cylinder when an end-node from one end is transformed to the other end. The variable of switching nodes from being fixed (anchored in physical terms) to un-fixed is tested in various locations. This investigates the ranges of density in the resulting mesh and the number of anchor points to the existing exhibition space. Attachments points for the net are minimized in the ceiling and evenly distributed in the floor.

2.1.2 Mapping of Computational Cylindrical Net

One of the simplest components of the design system is the double array assignment identifying each particle. The double array is created through a simple nested for-loop. Each step of assembling (defining the network topology), refining, and extracting information from the particle array simply means re-accessing the double array. The identification for each node remains constant through every transformation of the form. The methodology (the for-loop) remains constant as does the data inserted into the for-loop (the double array values for each particle/node). The ability to address different issues and manipulate

form generation in various ways is simply through the shift in how the for-loops move through the double array. These varied methods are described in Figures 12 and 13. It is a quite sophisticated capability in controlling, localizing, and accurately locating transformation, but accomplished through simple for-loop mechanisms.

The ease of fabrication is in the direct relationship of the initial components of the computational system to the parts of the physically constructed form. The particle is the identifier of a node in space, the point at which the springs connect. The spring, in the relaxed model, defines a physical distance between the nodes. Fabrication is a matter of coordinating this information and qualifying it to the characteristics of the material being used for construction. This logic is universal in the system. No matter what the formal outcome is the method for sorting through the nodes/particles for fabrication is the same for each result.

2.1.3 Data Mining for Fabrication through Node ID

The node identification is the most valuable information of the entire system. This is generated in the very first step of the process, where each node is defined by a unique double array value. The next step is in understanding the sequence of connecting the nodes. Rather than translating one spring to one length of material (in this case, 2.5mm diameter string is used), an array of springs is connected (Figure 3.5) so each net is broken down into only 20 individual lengths of material. The connection sequence for nodes is shown in Figure 3.XX. For construction, tags are generated to locate the nodes along the lengths of line and indicate which lines connect at each particular node. (Figure 3.XX) This data is then further filtered to define the specific distances between nodes and the overall lengths of the lines for construction. In calculation, the stretch of the 2.5 mm diameter string is considered and the distances between nodes are adjusted to respect material as opposed to their finite locations in digital space.

2.1.4 Spatial Articulation of Net

The “ring” topology eludes to certain types of geometries, in a rudimentary way: the cylinder. The cylinder is of particular interest because it describes a boundary and a directionality. In a form-finding process, this spatial capability can

be taken further to investigate directionality while simultaneously arranging structure. This combination of organizing space simultaneously with structure is intended to carry into the articulation of the Cylindrical Net Morphology installation.

A membrane component which combines tensionactive surfaces with an internal compression element serves to articulate the flow of view and space between the 2 surfaces of the net installation (Figure 2.1-33). Using the net surfaces for anchor points of the component, it becomes a lower-hierarchy element within the whole system. Though, visually, it becomes more apparent and registers the space between the two nets more distinctly.

Compression elements exist in the computational model to push the surfaces of the net apart in certain regions. In construction, they also serve as a device for post-tensioning. Computationally, the compression element is a spring whose actual length is shorter than its defined rest length. The nature of the force, tension or compression, can only be realized in the dynamic relaxation process, when all the spring forces are acting against eachother. This introduces another scenario where situations of both structure and space are solved simultaneously in this computational form-finding process.

36
embedded fabrication

Cylindrical Net Morphologies

cable-net installation for AA

Project Review Exhibition, spring 2008. the tensioned net, compression elements and membrane components for this installation were developed through the computational spring system in Processing. a cylindrical network topology of springs was transformed to produce the complex physical arrangement. the installation was built in the Studio 2 space at Bedford Square, june 2008.

37
2.1-2 2.1-2

2.1-3 transformation from symmetry. the initial spring model is based on a pair of circular arrays of anchor points. to adapt to the studio space for the installation, the two sets of anchor points are scaled eccentrically.

2.1-4 the transformation to the final net arrangement for fabrication utilizes 3 variables. 1- the anchor points are scaled assymetrically, 2-various edge particles in the net are unfixed, and 3- one fixed particle is relocated from its native location along the bottom array of points to a location along the top array. the red line indicates the relocation of a fixed particle from it original location to that on the upper boundary.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 5 6 7 8 9 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 191817 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16191817 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3456 7 8 9 10 11 12 16151413 17 18 19 0 1 2 3 4 5768 9 10 11 12 13 14151617 1918 0 1324 5 6 7 8 9 10111213 1514 16 17 18 19 0 1 2 3 4 5768 9 10 11 12 13 14151617 1918 0 1 2 54367 8 9 1011121314 1918171615 0 1 2 3 4 5768 9 10 11 12 13 14 1516 191817 210 345 6 7 8 9101112 19181716151413 0 1 2 435 6 7 8 9 10 11 121314 15 16 17 18 19 012345678910 191817161514131211 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1817 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 19181716 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 56 7 8 9 10 11 171615141312 18 19 0 38
2.1-3
2.1.1 Cylindrical Transformation embedded fabrication
1 2 3 4 5 6 7 8 9 10 17 18 19 11 12 13 14 15 16 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1918 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 1 2 3 465 7 8 9 10 11 12 13 1514 1617 18 19 19 0 15 1 2 3 4 5 6 7 8 9 10 17 18 19 11 12 13 14 15 16 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1918 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 1 2 3 465 7 8 9 10 11 12 13 1514 1617 18 19 19 0 15 1 2 3 4 5 6 7 8 9 10 17 18 19 11 12 13 14 15 16 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1918 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 1 2 3 465 7 8 9 10 11 12 13 1514 1617 18 19 19 0 15 39 2.1-4

2.1-5 initial design for experiment of translating digitally form-found model in Processing to physical construction. the design was extracted as linework from Processing into Rhino.

2.1-6 manual placement of node tags. nodes were identified in the digital model at the intersections between individual springs. the IDs were done manually, so there is no clear convention nor a specific pattern in the naming.

2.1-7 length measurements from Processing. the distances between particles (meaning the length of springs) was calculated digitally and compiled directly into an Excel spreadsheet. the lengths were compiled in a way to create continuous lengths of material. the translation was 14 individual computational springs = 1 length of string with individual lengths measured along that line.

19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 V j9 j9 V j15 j15 X100 X99 X98 X150 X154 V j14 j14 V j8 j8 X155 X156 V j13 j13 X157 X71 X158 V j12j12 V j7 j7 X159 X60 X61 X62 X63 X59 X58 X57 0 VF0 VF2VF1 VF3 VF4 VF5 VF6 VF7 VF8 VF9 VF10 VF11VF12 VF13 X1 X6 X7 X8 tablefront tableback X9 X10 X11 X12 X13 X14 V1 1 X15 X16 X17 X18 X19 X20 X21 X22 V2 X23 X24 X25 V j11 j11 X64 V j14 j1 X37 X36 V j13 j0 X35 X34 X38 X39 X40 X41 X42 X43 X44 X45 X46 X47 X48 X49 X50 X51 X52 X53 X54 X56X55 X95 X33 X32 X31 X30 X29 X28 X27 X26 X70 X97 V j10 j10 Vj6 j6 X160 X200 X201 X333 X153 x334 18 17 16 14 13 12 11 10 8 7 6 4 3 2 1 X92 Vj19 j19 V j9 j9 X102 V j15 j15 X100 X101 X99 X98 X150 X154 V j14 j14 V j8 j8 Vj4 j4 X155 X156 V j13 j13 X87X84 X157 X88 X86 V j15 2 X84 V j16 j16 V j18 j18 X83 X82 X81 X80 X79 X77 X76 X75 X74 X73 V j12j12 V j7 j7 X90 X91 X159 X61 V j17 j4 X62 X63 X59 VF0 VF2VF1 VF3 VF4 VF5 VF6 VF7 VF8 VF9 VF10 VF11VF12 VF13 VR0 VR1 VR3 VR2 X2 X3 X5 X6 X8 tablefront tableback X9 X10 X14 1 X15 X16 X17 X19 X20 X22 X25 X93 Vj3 j3 V j11 j11 X64 V j14 j1 X94 X37 V j13 j0 X34 X38 X39 X40 X41 X42 X43 X44 X45 X46 X48 X54 X95 Vj2 j2 X33 X32 X67 X30 X68 X29 X28 X69 X27 X26 X70 X97 Vj1 j1 V j10 j10 Vj6 j6 X160 X200 X201 X81a X333 X153 x334 V j3 j16 V0 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X92 V j9 j9 X102 X103 X100 X101 X99 X98 X150 X154 V j8 j8 Vj4 j4 X155 X156 V j13 X157 X158 V j12j12 V j7 j7 X91 X159 0 VF0 VF2VF1 VF3 VF4 VF5 VF6 VF7 VF8 VF9 VF10 VF11VF12 VF13 VR0 X1 X2 X3 X6 X7 X8 tableback X9 X10 X11 X12 X13 X14 V1 1 X15 X16 X17 X18 X19 X20 X21 X22 V2 X23 X24 X25 X93 Vj3 j3 V j11 j11 X94 X37 X36 X35 X34 X38 X39 X40 X41 X42 X43 X44 X45 X46 X47 X52 X53 X95 Vj2 j2 X33 X32 X31 X30 X96 X29 X28 X27 X26 X97 V j10 j10 Vj6 j6 X160 X200 X201 X153 x334 V0 40
2.1-5 2.1-6
2.1.1 Cylindrical Transformation embedded fabrication
41 2.1-7

2.1-8 and 2.1-11 full-scale mockup for design of tensioned net installation. this mockup tests the translation from computational data and the method for assembling the cable net. the white tags are the node identifiers. the larger tags identify the start or end of the major line elements. gold elements compression elements. inserted into the net testing their affect for post-tension and spatial articulation.

2.1-9

sequencing of fabrication. lines were installed and locked together, using cable ties, where they crossed per the information in the digital model. one node ID exists on 2 lines. this indicates the crossing point and where the two seperate lines would become locked together. the only positional information (x,y,z coordinates) that was necessary was for the anchor points on the floor and ceiling of the space.

2.1-10

compression elements were installed into the net after it was fully assembled. these acted as devices to add tension to the system and see how local posttension would effect the overall arrangement. these elements also allowed to spatially articulate the net - expanding certain areas by pushing apart the surfaces of the net. the compression element were aluminum tent poles with a diameter of 8mm. in future experiments, the simulation of compression elements was added as a capability of the computational process.

42
2.1-8 2.1-9
2.1.1 Cylindrical Transformation embedded fabrication
43 2.1-11 2.1-10

2.1-12 and 2.1-12a unique double array values. simple particle map which describes the unique ID for each particle. the ID is created through a simple , logical double for-loop in Processing.

2.1-13 and 2.1-13a installing of springs, connecting all particles. this is an example of how the double array ID method becomes useful. for inserting the network of springs, it is a simple computational method of stepping incrementally through the list of particles.

2.1-14 and 2.1-14a moving through node network for fabrication. while we want to track the springs in the network, we want to move through it in a fashion that connects springs across the entire network. for fabrication, as opposed to translating one spring into a single length of material. this method assembles multiple springs, accumulating the length and association data, and creating longer, but fewer continuous lengths of material. the computational method for extracting this information is more complex. though, the complexity is primarily due to tracking across the ends of the computational boundary. the incrementing has to be adjusted when hitting the maximum boundary of the array - setting is back to zero 0 to then continue incrementing upwards.

6) 5 (1 (7 (4 0) (2 3) 6) 5 (1 (7 (4 0) (2 3) 6) 5 (1 (7 (4 0) (2 3) (7 3) 5 (1 6) 2 0) (4 (7 6) 5 (4 3) (2 (1 0) 2 3 4 1 (3 (1 (4 (0 (2 3 1 4 0 2 3 1 4 0 2 3 1 4 0 2 3) 1) 4) 0) 2) (3 (1 (4 (0 0 (2 3 1 4 0 2 3 0 1 4 2 1 3 2 4 5 0 i 7 6 1 0 3 4 2 6 5 1) 7 4) 0 (2 3 6 5 1) 7 4) 0 (2 3 6 5 1) 7 4) 0 (2 3 (7 3 5 1) 6 (2 0 4) (7 6 5 4) 3 (2 1) 0 2) 3) 4) 1) (3 (1 (4 (0 (2 3 1 4 0 2 3) 1) 4) 0) 2) (3 (1 (4 (0 (2 3 1 4 0 2 (3) (1) (4) (0) 0) (2) 3 1 4 0 2 5 0 4 4 0 1 3 7 3 1 6 2 2 1 3 4 2 7 0 2 1 4 0 5 3 6 1 3 4 2 7 0 2 1 4 0 5 3 6 (7) (7) 7 (0) (4) 4 0 (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (2) (3) (3) (5) (1) (6) (2) (0) (4) (6) (5) (4) (3) (2) (1) (0) (2) (3) (4) (1) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (0) (2) (3) (1) (4) (0) (2) (7) (7) (7) (4) (0) 5 0 4 4 0 1 3 7 3 1 6 2 2 (7) (6 (5 (4) (3) (2) 1) 0) (0) 0) 0) (0) (0) (0) (0) (0 (7) (6 (5 (4) (3) (2) 1) 0) (1) 1) (1) (1) (1) (1) (1) (1 (7) (6 (5 (4) (3) (2) 1) 0) (2) 2) (2) (2) (2) (2) (2) (2 (7) (6 (5 (4) (3) (2) 1) 0) (3) 3) (3) (3) (3) (3) (3) (3 (7) (6) (5 (4) (3) (2) (1) (0) (4) 4) (4) (4) (4) (4) (4) (4 (j) (i) (j+1) start end (j+0) (i+1) (i+1) 5 0 4 4 0 1 3 7 3 1 6 2 2 start open-edge connectivity (j) (i) (j+1) (j+0) (i+1) (i+1) typical connectivity array size closed-edge connectivity end 6) 5 (1 (7 (4 0) (2 3) 6) 5 (1 (7 (4 0) (2 3) 6) 5 (1 (7 (4 0) (2 3) (7 3) 5 (1 6) 2 0) (4 (7 6) 5 (4 3) (2 (1 0) 2 3 4 1 (3 (1 (4 (0 (2 3 1 4 0 2 3 1 4 0 2 3 1 4 0 2 3) 1) 4) 0) 2) (3 (1 (4 (0 0 (2 3 1 4 0 2 4 3 4 6 5 1) 7 4) 0 (2 3 6 5 1) 7 4) 0 (2 3 3) 4) (3 (4 3 4 3) 4) (3 (4 3 4 (3) (4) 3 4 5 0 4 4 0 1 3 7 3 1 6 2 2 1 3 4 2 7 0 2 1 4 0 5 3 6 4 (7) (7) 7 (0) (4) 4 0 (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (2) (3) (3) (5) (1) (6) (2) (0) (4) (6) (5) (4) (3) (2) (1) (0) (2) (3) (4) (1) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (0) (2) (3) (1) (4) (0) (2) (7) (7) (7) (4) (0) 5 0 4 4 0 1 3 7 3 1 6 2 2 (7) (6 (5 (4) (3) (2) 1) 0) (0) 0) 0) (0) (0) (0) (0) (0 (7) (6 (5 (4) (3) (2) 1) 0) (1) 1) (1) (1) (1) (1) (1) (1 (7) (6 (5 (4) (3) (2) 1) 0) (2) 2) (2) (2) (2) (2) (2) (2 (7) (6 (5 (4) (3) (2) 1) 0) (3) 3) (3) (3) (3) (3) (3) (3 (7) (6) (5 (4) (3) (2) (1) (0) (4) 4) (4) (4) (4) (4) (4) (4 (j) (i) (j+1) start end (j+0) (i+1) (i+1) 5 0 4 4 0 1 3 7 3 1 6 2 2 start open-edge connectivity (j) (i) (j+1) (j+0) (i+1) (i+1) typical connectivity array size closed-edge connectivity end (7) (6) (5) 4) 3) (2) (1) (0) (0) (0) (0) (0) (0) (0) (0) (0) (7) (6) (5) 4) 3) (2) (1) (0) (1) (1) (1) (1) 1) (1) (1) (1) (7) (6) (5) 4) 3) (2) (1) (0) (2) (2) (2) (2) 2) (2) (2) (2) (7) (6) (5) 4) 3) (2) (1) (0) (3) (3) (3) 3) 3) (3) (3) (3) (7) (6) (5) 4) 3) (2) (1) (0) (4) (4) (4) 4) 4) (4) (4) (4) 5 0 4 4 0 1 3 7 3 1 6 2 2 (7) (6) (5) 4) 3) (2) (1) (0) (0) (0) (0) (0) (0) (0) (0) (0) (7) (6) (5) 4) 3) (2) (1) (0) (1) (1) (1) (1) 1) (1) (1) (1) (7) (6) (5) 4) 3) (2) (1) (0) (2) (2) (2) (2) 2) (2) (2) (2) (7) (6) (5) 4) 3) (2) (1) (0) (3) (3) (3) 3) 3) (3) (3) (3) (7) (6) (5) 4) 3) (2) (1) (0) (4) (4) (4) 4) 4) (4) (4) (4) 5 0 4 4 0 1 3 7 3 1 6 2 2 44
2.1-12 2.1-13 2.1-14 2.1.2
Net embedded fabrication
Mapping of Computational Cylindrical
45 2.1-12a 2.1-13a 2.1-14a

2.1-15

final design of cable net for installation. the orange line highlights multiple springs to be connected for fabrication as a single length of material. each spring length is tabulated and logged into the associated node information. nodes and the static spring model is reconstructed through a script in Rhino. this version of the net is designed for installation in the AA Studio 2 space.

2.1-16

ID tag for specific node/particle. the ID for the tag originates from the double-array value assigned to the particle during the initial creation of the array of particles and spring network.

2.1-17

particle map for computational net. the hilighted springs describe the movement through the double-array of particles to describe the a single continuous line for fabrication. this method is embedded in the computational process in Processing. because it describes a movement through the topological particle map, any geometry can be analyzed in this same manner., and thus fabricated as well.

A2_id6,20 L14:L20

A2_id6,20

L14:L20

L14:L20

A2_id6,20

L14:L20

A9_id1,0 L0:L20 A8_id0,20 L20:L20 A7_id1,20 L19:L20 A10_id2,1 L1:L20 A6_id2,20 L18:L20 A11_id3,2 L2:L20 A12_id4,3 L3:L20 A13_id5,4 L4:L20 A5_id3,20 L17:L20 A4_id4,20 L16:L20 A3_id5,20 L15:L20 A2_id6,20 L14:L20 A1_id7,20 L13:L20 A0_id8,20 L12:L20 A14_id6,5 L5:L20 A15_id7,6 L6:L20 A16_id8,7 L7:L20
A9_id1,0 L0:L20 A8_id0,20 L20:L20 A7_id1,20 L19:L20 A10_id2,1 L1:L20 A11_id3,2 L2:L20 A12_id4,3 L3:L20 A13_id5,4 L4:L20 A5_id3,20 L17:L20 A4_id4,20 L16:L20 A3_id5,20 L15:L20 A2_id6,20 L14:L20 A1_id7,20 L13:L20 A0_id8,20 L12:L20 A14_id6,5 L5:L20 A15_id7,6 L6:L20 A16_id8,7 L7:L20
A2_id6,20
46
2.1-15 2.1-16
2.1.3 Data Mining for Fabrication through Node ID embedded fabrication
(7) (6) (5) (4) (3) (2) (1) (0) (0) (0) (0) (0) (0) (0) (0) (0) (7) (6) (5) (4) (3) (2) (1) (0) (1) (1) (1) (1) (1) (1) (1) (1) (7) (6) (5) (4) (3) (2) (1) (0) (2) (2) (2) (2) (2) (2) (2) (2) (7) (6) (5) (4) (3) (2) (1) (0) (3) (3) (3) (3) (3) (3) (3) (3) (7) (6) (5) (4) (3) (2) (1) (0) (4) (4) (4) (4) (4) (4) (4) (4) (9) (8) (0) (0) (9) (8) (1) (1) (9) (8) (2) (2) (9) (8) (3) (3) (9) (8) (4) (4) (11) (10) (0 (0) (11) (10) (1 (1) (11) (10) (2 (2) (11) (10) (3 (3) (11) (10) (4 (4) (13) (12) (0) (0) (13) (12) (1) (1) (13) (12) (2) (2) (13) (12) (3) (3) (13) (12) (4) (4) (15 (14) (0) (0) (15 (14) (1) (1) (15 (14) (2) (2) (15 (14) (3) (3) (15 (14) (4) (4) (17) (16) (0) (0) (17) (16) (1) (1) (17) (16) (2) (2) (17) (16) (3) (3) (17) (16) (4) (4) (19) (18) (0) (0) (19) (18) (1) (1) (19) (18) (2) (2) (19) (18) (3) (3) (19) (18) (4) (4) (20) (0) (20) (1) (20) (2) (20) (3) (20) (4) 5 0 4 5 6 7 8 4 0 1 3 7 3 1 6 2 2 (7) (6) (5) (4) (3) (2) (1) (0) (5) (5) (5) (5) (5) (5) (5) (5) (9) (8) (5) (5) (11) (10) (5 (5) (13) (12) (5) (5) (15 (14) (5) (5) (17) (16) (5) (5) (19) (18) (5) (5) (20) (5) (7) (6) (5) (4) (3) (2) (1) (0) (6) (6) (6) (6) (6) (6) (6) (6) (9) (8) (6) (6) (11) (10) (6 (6) (13) (12) (6) (6) (15 (14) (6) (6) (17) (16) (6) (6) (19) (18) (6) (6) (20) (6) (7) (6) (5) (4) (3) (2) (1) (0) (7) (7) (7) (7) (7) (7) (7) (7) (9) (8) (7) (7) (11) (10) (7 (7) (13) (12) (7) (7) (15 (14) (7) (7) (17) (16) (7) (7) (19) (18) (7) (7) (20) (7) (7) (6) (5) (4) (3) (2) (1) (0) (8) (8) (8) (8) (8) (8) (8) (8) (9) (8) (8) (8) (11) (10) (8 (8) (13) (12) (8) (8) (15 (14) (8) (8) (17) (16) (8) (8) (19) (18) (8) (8) (20) (8) 8 9 10 11 12 13 14 15 16 17 18 19 20 47 2.1-17

2.1-18

description of complete net with all node IDs. the installation consists of 2 nets (net A and net B, as shown in excel data Figure 3.19). They grey and orange lines depict the 2 different nets. At moments, they are pushed apart by springs acting in compression in the computational model.

2.1-19 sample of excel data extracted from computational model.

a distance in computational model from current particle to the previous particle

cummulative distance for physical string material. value is reduced by 10% to account for material stretch

c net A or net B

d node number alond current line and unique ID for current node

e other line which crosses at current node

f current line

2.1-20 list of Excel sheet printed for fabrication. these “mappings” laid out all the lengths and node locations for the strings to fabricate the entire net. for net A and net B, there were a total of 8 sheets necessary to build the entire installation.

2.1-21 printed tags. from the Excel file, tags were printed to be affixed to the strings. this allows for the physical node to be seen in space. data on the tag would indicate which lines should cross at any given node.

2.1-22 sample of Excel spreadsheet showing the data for construction of 2 seperate lines. data is extracted directly out of the Processing model.

b

A9_id1,0 L0:L20 A8_id0,20 L20:L20 A7_id1,20 L19:L20 A10_id2,1 L1:L20 A6_id2,20 L18:L20 A11_id3,2 L2:L20 A12_id4,3 L3:L20 A13_id5,4 L4:L20 A4_id4,20 L16:L20 A3_id5,20 L15:L20 A2_id6,20 L14:L20 A1_id7,20 L13:L20 A0_id8,20 L12:L20 A14_id6,5 L5:L20 A15_id7,6 L6:L20 A16_id8,7 L7:L20 A2_id6,20 L14:L20 A 0 net A 0 id 8,16 L 8 :L 16 0 0 net A 0 id 8,17 L 9 :L 17 cm 27 cm net A 1 id 7,16 L 9 :L 16 31.8 cm 28.7 cm net A 1 id 7,17 L 10 :L 17 cm 53.4 cm net A 2 id 6,16 L 10 :L 16 30.9 cm 56.5 cm net A 2 id 6,17 L 11 :L 17 cm 79.2 cm net A 3 id 5,16 L 11 :L 16 32.7 cm 85.9 cm net A 3 id 5,17 L 12 :L 17 cm 104.6 cm net A 4 id 4,16 L 12 :L 16 33.3 cm 115.9 cm net A 4 id 4,17 L 13 :L 17 cm 131.4 cm net A 5 id 3,16 L 13 :L 16 33.5 cm 146.1 cm net A 5 id 3,17 L 14 :L 17 cm 158.8 cm net A 6 id 2,16 L 14 :L 16 35.5 cm 178 cm net A 6 id 2,17 L 15 :L 17 cm 185.8 cm net A 7 id 1,16 L 15 :L 16 39.8 cm 213.9 cm net A 7 id 1,17 L 16 :L 17 cm 214 cm net A 8 id 0,16 L 16 :L 16 45 cm 254.4 cm net A 8 id 0,17 L 17 :L 17 cm 242.3 cm net A 9 id 1,17 L 17 :L 16 48.9 cm 298.4 cm net A 9 id 1,18 L 18 :L 17 cm 266 cm net A 10 id 2,18 L 18 :L 16 39.4 cm 333.9 cm net A 10 id 2,19 L 19 :L 17 cm 286.8 cm net A 11 id 3,19 L 19 :L 16 31.8 cm 362.5 cm net A 11 id 3,20 L 20 :L 17 cm 308.8 cm net A 12 id 4,20 L 20 :L 16 26 cm 385.9 cm net A 12 id 4,0 L 0 :L 17 cm 325.4 cm net A 13 id 5,0 L 0 :L 16 24.1 cm 407.6 cm net A 13 id 5,1 L 1 :L 17 cm 341.8 cm net A 14 id 6,1 L 1 :L 16 26.3 cm 431.3 cm net A 14 id 6,2 L 2 :L 17 cm 359.1 cm net A 15 id 7,2 L 2 :L 16 28.3 cm 456.7 cm net A 15 id 7,3 L 3 :L 17 cm 377.5 cm net A 16 id 8,3 L 3 :L 16 32.7 cm 486.1 cm net A 16 id 8,4 L 4 :L 17 0 net A 0 id 8,19 L 11 :L 19 0 0 net A 0 id 8,20 L 12 :L 20 cm 29.3 cm net A 1 id 7,19 L 12 :L 19 64.4 cm 58 cm net A 1 id 7,20 L 13 :L 20 cm 65.9 cm net A 2 id 6,19 L 13 :L 19 44.7 cm 98.2 cm net A 2 id 6,20 L 14 :L 20 cm 102.3 cm net A 3 id 5,19 L 14 :L 19 38.9 cm 133.2 cm net A 3 id 5,20 L 15 :L 20 cm 140 cm net A 4 id 4,19 L 15 :L 19 36.3 cm 165.9 cm net A 4 id 4,20 L 16 :L 20 cm 179.7 cm net A 5 id 3,19 L 16 :L 19 34.8 cm 197.3 cm net A 5 id 3,20 L 17 :L 20 cm 222.4 cm net A 6 id 2,19 L 17 :L 19 32.7 cm 226.7 cm net A 6 id 2,20 L 18 :L 20 cm 263.2 cm net A 7 id 1,19 L 18 :L 19 36.7 cm 259.7 cm net A 7 id 1,20 L 19 :L 20 cm 299 cm net A 8 id 0,19 L 19 :L 19 45.8 cm 301 cm net A 8 id 0,20 L 20 :L 20 cm 334.8 cm net A 9 id 1,20 L 20 :L 19 51.1 cm 347 cm net A 9 id 1,0 L 0 :L 20 cm 363.5 cm net A 10 id 2,0 L 0 :L 19 72.2 cm 412 cm net A 10 id 2,1 L 1 :L 20 cm 401.2 cm net A 11 id 3,1 L 1 :L 19 67.6 cm 472.9 cm net A 11 id 3,2 L 2 :L 20 cm 445.6 cm net A 12 id 4,2 L 2 :L 19 61.1 cm 527.9 cm net A 12 id 4,3 L 3 :L 20 cm 490.7 cm net A 13 id 5,3 L 3 :L 19 56.7 cm 578.9 cm net A 13 id 5,4 L 4 :L 20 cm 537.7 cm net A 14 id 6,4 L 4 :L 19 61.9 cm 634.6 cm net A 14 id 6,5 L 5 :L 20 cm 591.4 cm net A 15 id 7,5 L 5 :L 19 91.4 cm 716.9 cm net A 15 id 7,6 L 6 :L 20 cm 754.9 cm net A 16 id 8,6 L 6 :L 19 67.3 cm 777.4 cm net A 16 id 8,7 L 7 :L 20 1 : 1/30/2009 : _080625_membrane_proto4_data_pArr1_stretch10_formatted.xls B3_id5,9 L4:L9 B6_id2,9 L7:L9 B10_id2,11 L11:L9 B15_id7,16 L16:L9 B9_id1,10 L10:L9 B4_id4,9 L5:L9 B14_id6,15 L15:L9 B7_id1,9 L8:L9 B13_id5,14 L14:L9 B2_id6,9 L3:L9 B5_id3,9 L6:L9 B8_id0,9 L9:L9 B0_id8,9 L1:L9 B16_id8,17 L17:L9 B1_id7,9 L2:L9 B12_id4,13 L13:L9 B12_id4,12 L12:L8 B1_id7,8 L1:L8 B16_id8,16 L16:L8 B10_id2,10 L10:L8 B5_id3,8 L5:L8 B11_id3,11 L11:L8 B4_id4,8 L4:L8 B6_id2,8 L6:L8 B2_id6,8 L2:L8 B13_id5,13 L13:L8 B7_id1,8 L7:L8 B0_id8,8 L0:L8 B8_id0,8 L8:L8 B15_id7,15 L15:L8 B14_id6,14 L14:L8 B3_id5,8 L3:L8 B7_id1,7 L6:L7 B4_id4,7 L3:L7 B6_id2,7 L5:L7 B5_id3,7 L4:L7 B13_id5,12 L12:L7 B14_id6,13 L13:L7 B10_id2,9 B15_id7,14 L14:L7 B12_id4,11 L11:L7 B16_id8,15 L15:L7 B3_id5,7 L2:L7 B11_id3,10 L10:L7 B8_id0,7 L7:L7 B1_id7,7 L0:L7 B0_id8,7 L20:L7 B2_id6,7 L1:L7 B12_id4,10 L10:L6 B2_id6,6 L0:L6 B16_id8,14 L14:L6 B0_id8,6 L19:L6 B3_id5,6 L1:L6 B14_id6,12 L12:L6 B4_id4,6 L2:L6 B7_id1,6 L5:L6 B5_id3,6 L3:L6 B8_id0,6 L6:L6 B15_id7,13 L13:L6 B10_id2,8 L8:L6 B6_id2,6 L4:L6 B11_id3,9 L9:L6 B13_id5,11 L11:L6 B1_id7,6 L20:L6 B16_id8,13 L13:L5 B6_id2,5 L3:L5 B13_id5,10 L10:L5 B4_id4,5 L1:L5 B0_id8,5 L18:L5 B14_id6,11 L11:L5 B10_id2,7 L7:L5 B2_id6,5 L20:L5 B5_id3,5 L2:L5 B1_id7,5 L19:L5 B7_id1,5 L4:L5 B11_id3,8 L8:L5 B8_id0,5 L5:L5 B15_id7,12 L12:L5 B12_id4,9 L9:L5 B3_id5,5 L0:L5 B8_id0,4 L4:L4 B13_id5,9 L9:L4 B6_id2,4 L2:L4 B10_id2,6 B2_id6,4 L19:L4 B3_id5,4 L20:L4 B15_id7,11 L11:L4 B11_id3,7 L7:L4 B16_id8,12 L12:L4 B0_id8,4 L17:L4 B5_id3,4 L1:L4 B12_id4,8 L8:L4 B1_id7,4 L18:L4 B14_id6,10 L10:L4 B4_id4,4 L0:L4 B1_id7,3 L17:L3 B6_id2,3 L1:L3 B8_id0,3 L3:L3 B4_id4,3 L20:L3 B14_id6,9 L9:L3 B12_id4,7 B3_id5,3 L19:L3 B10_id2,5 L5:L3 B5_id3,3 L0:L3 B7_id1,3 L2:L3 B0_id8,3 L16:L3 B11_id3,6 L6:L3 B2_id6,3 L18:L3 B16_id8,11 L11:L3 B15_id7,10 L10:L3 B13_id5,8 L8:L3 B0_id8,20 L12:L20 B13_id5,4 L4:L20 B3_id5,20 L15:L20 B5_id3,20 L17:L20 B2_id6,20 L14:L20 B1_id7,20 L13:L20 B8_id0,20 L20:L20 B15_id7,6 L6:L20 B7_id1,20 L19:L20 B6_id2,20 L18:L20 B12_id4,3 L3:L20 B11_id3,2 L2:L20 B9_id1,0 L0:L20 B16_id8,7 L7:L20 L5:L20 B4_id4,20 L16:L20 B10_id2,1 L1:L20 B14_id6,8 B13_id5,7 B12_id4,6 L6:L2 B15_id7,9 L9:L2 B11_id3,5 B6_id2,2 L0:L2 B10_id2,4 B0_id8,2 L15:L2 B2_id6,2 L17:L2 B1_id7,2 L16:L2 B8_id0,2 L2:L2 B7_id1,2 L1:L2 B5_id3,2B4_id4,2L20:L2L19:L2 B3_id5,2 L18:L2 L10:L2 B15_id7,5 L5:L19 B7_id1,19 L18:L19 B6_id2,19 L17:L19 B16_id8,6 L6:L19 B0_id8,19 L11:L19 B12_id4,2 L2:L19 B8_id0,19 L19:L19 B5_id3,19 L16:L19 B14_id6,4 L4:L19 B1_id7,19 L12:L19 B11_id3,1 L1:L19 B4_id4,19 L15:L19 B2_id6,19 L13:L19 B13_id5,3 L3:L19 B10_id2,0 L0:L19 B3_id5,19 L14:L19 B7_id1,18 L17:L18 B12_id4,1 L1:L18 B14_id6,3 L3:L18 B11_id3,0 L0:L18 B10_id2,20 L20:L18 B6_id2,18 L16:L18 B4_id4,18 L14:L18 B3_id5,18 L13:L18 B2_id6,18 L12:L18 B16_id8,5 L5:L18 B8_id0,18 L18:L18 B0_id8,18 L10:L18 B1_id7,18 L11:L18 B5_id3,18 L15:L18 L4:L18 B13_id5,2 L2:L18 B7_id1,17 L16:L17 B1_id7,17 L10:L17 B2_id6,17 L11:L17 B15_id7,3 L3:L17 B12_id4,0 L0:L17 B11_id3,20 L20:L17 B16_id8,4 L4:L17 B4_id4,17 L13:L17 B10_id2,19 L19:L17 B14_id6,2 L2:L17 B5_id3,17 L14:L17 B13_id5,1 L1:L17 B8_id0,17 L17:L17 B0_id8,17 L9:L17 B3_id5,17 L12:L17 B1_id7,16 L9:L16 B2_id6,16 L10:L16 B0_id8,16 L8:L16 B16_id8,3 L3:L16 B12_id4,20 L20:L16 B8_id0,16 L16:L16 B6_id2,16 L14:L16 B5_id3,16 L13:L16 B4_id4,16 L12:L16 B14_id6,1 L1:L16 B15_id7,2 L2:L16 B3_id5,16 L11:L16 B7_id1,16 L15:L16 B10_id2,18 L18:L16 B11_id3,19 L19:L16 B15_id7,1 L1:L15 B11_id3,18 L18:L15 B5_id3,15 L12:L15 B3_id5,15 L10:L15 B2_id6,15 L9:L15 B1_id7,15 L8:L15 B0_id8,15 L7:L15 B4_id4,15 L11:L15 B16_id8,2 L2:L15 B6_id2,15 L13:L15 B14_id6,0 L0:L15 B7_id1,15 L14:L15 B13_id5,20 L20:L15 B12_id4,19 L19:L15 B8_id0,15 L15:L15 B16_id8,1 L1:L14 B15_id7,0 L0:L14 B14_id6,20 L20:L14 B13_id5,19 L19:L14 B12_id4,18 L18:L14 B11_id3,17 L17:L14 B10_id2,16 B8_id0,14 L14:L14 B0_id8,14 L6:L14 B2_id6,14 L8:L14 B6_id2,14 L12:L14 B4_id4,14 L10:L14 B7_id1,14 L13:L14 B5_id3,14 L11:L14 B3_id5,14 L9:L14 B1_id7,14 L7:L14 B1_id7,13 L6:L13 B3_id5,13 L8:L13 B2_id6,13 L7:L13 B7_id1,13 L12:L13 B5_id3,13 L10:L13 B4_id4,13 L9:L13 B13_id5,18 L18:L13 B0_id8,13 L5:L13 B16_id8,0 L0:L13 B15_id7,20 L20:L13 B14_id6,19 L19:L13 B12_id4,17 L17:L13 B11_id3,16 L16:L13 B10_id2,15 L15:L13 B8_id0,13 L13:L13 B6_id2,13 L11:L13 B12_id4,16 L16:L12 B0_id8,12 L4:L12 B10_id2,14 L14:L12 B16_id8,20 L20:L12 B14_id6,18 L18:L12 B8_id0,12 L12:L12 B6_id2,12 L10:L12 B4_id4,12 L8:L12 B2_id6,12 L6:L12 B15_id7,19 L19:L12 B13_id5,17 L17:L12 B11_id3,15 B7_id1,12 L11:L12 B3_id5,12 L7:L12 B1_id7,12 L5:L12 B8_id0,11 L11:L11 B5_id3,11 L8:L11 B4_id4,11 L7:L11 B3_id5,11 L6:L11 B1_id7,11 L4:L11 B0_id8,11 L3:L11 B6_id2,11 L9:L11 B15_id7,18 L18:L11 B2_id6,11 L5:L11 B10_id2,13 L13:L11 B16_id8,19 L19:L11 B14_id6,17 L17:L11 B13_id5,16 L16:L11 B12_id4,15 L15:L11 B11_id3,14 L14:L11 B16_id8,18 L18:L10 B14_id6,16 L16:L10 B13_id5,15 L15:L10 B12_id4,14 L14:L10 B10_id2,12 B8_id0,10 L10:L10 B6_id2,10 L8:L10 B5_id3,10 L7:L10 B15_id7,17 B11_id3,13 L13:L10 B1_id7,10 L3:L10 B0_id8,10 L2:L10 B2_id6,10 L4:L10 B4_id4,10 L6:L10 B3_id5,10 L5:L10 B14_id6,7 L7:L1 B13_id5,6 L6:L1 B12_id4,5 L5:L1 B11_id3,4 B10_id2,3 B8_id0,1 L1:L1 B7_id1,1 L0:L1 B6_id2,1 L20:L1 B5_id3,1 L19:L1 B4_id4,1 L18:L1 B3_id5,1 L17:L1 B2_id6,1 L16:L1 B1_id7,1 L15:L1 B0_id8,1 L14:L1 B16_id8,9 L9:L1 B15_id7,8 L8:L1 B16_id8,8 B15_id7,7 L7:L0 B14_id6,6 L6:L0 B13_id5,5 B12_id4,4 L4:L0 B11_id3,3 B10_id2,2 B8_id0,0 L0:L0 B6_id2,0 L19:L0 B5_id3,0 L18:L0 B4_id4,0 L17:L0 B2_id6,0 L15:L0 B1_id7,0 L14:L0 B0_id8,0 L13:L0 A15_id7,6 L6:L20 A9_id1,0 L0:L20 A3_id5,20 L15:L20 A11_id3,1 L1:L19 A5_id3,19 L16:L19 A1_id7,18 L11:L18 A13_id5,2 L2:L18 L20:L17A12_id4,0 A15_id7,3 L3:L17 A3_id5,17 L12:L17 A5_id3,16 L13:L16 A11_id3,19 L19:L16 A13_id5,20 L20:L15 A7_id1,15 L14:L15 A1_id7,15 L8:L15 A3_id5,14 L9:L14 A15_id7,0 L0:L14 A11_id3,16 L16:L13A10_id2,15 A13_id5,17 L17:L12A12_id4,16 L16:L12A11_id3,15 L15:L12A10_id2,14 L14:L12A9_id1,13 L13:L12A8_id0,12 A7_id1,12 L11:L12A6_id2,12 A1_id7,12 L5:L12 A15_id7,18 L18:L11 A3_id5,11 L6:L11 L12:L11 A5_id3,10A4_id4,10L7:L10L6:L10 A1_id7,9 L2:L9 A13_id5,14 L14:L9 A7_id1,9 L8:L9 A15_id7,15 L15:L8 A5_id3,8L6:L8L5:L8 A3_id5,8 L3:L8 A5_id3,7 L4:L7 A11_id3,10 L10:L7 A1_id7,6 L20:L6 A13_id5,11 L11:L6 A7_id1,6 L5:L6 A15_id7,12 L12:L5 A3_id5,5 L0:L5 A11_id3,7 A1_id7,3 L17:L3 L8:L3 A7_id1,3 L2:L3 A15_id7,9 L9:L2 A3_id5,2 L18:L2 A5_id3,1 L19:L1A4_id4,1 A1_id7,0 L14:L0 A13_id5,5 L5:L0 48
2.1-20 2.1-18 2.1-21 2.1-19 a b c d e f 2.1.3 Data
for Fabrication through
fabrication
Mining
Node ID embedded

1 : 1/30/2009 : _080625_membrane_proto4_data_pArr1_stretch10_formatted.xls

: _080625_membrane_proto4_data_pArr1_stretch10_formatted.xls

A 8,16 L 8 :L 16 0 0 net A 0 id 8,17 L 9 :L 17 7,16 L 9 :L 16 31.8 cm 28.7 cm net A 1 id 7,17 L 10 :L 17 6,16 L 10 :L 16 30.9 cm 56.5 cm net A 2 id 6,17 L 11 :L 17 5,16 L 11 :L 16 32.7 cm 85.9 cm net A 3 id 5,17 L 12 :L 17 4,16 L 12 :L 16 33.3 cm 115.9 cm net A 4 id 4,17 L 13 :L 17 3,16 L 13 :L 16 33.5 cm 146.1 cm net A 5 id 3,17 L 14 :L 17 2,16 L 14 :L 16 35.5 cm 178 cm net A 6 id 2,17 L 15 :L 17 1,16 L 15 :L 16 39.8 cm 213.9 cm net A 7 id 1,17 L 16 :L 17 0,16 L 16 :L 16 45 cm 254.4 cm net A 8 id 0,17 L 17 :L 17 1,17 L 17 :L 16 48.9 cm 298.4 cm net A 9 id 1,18 L 18 :L 17 2,18 L 18 :L 16 39.4 cm 333.9 cm net A 10 id 2,19 L 19 :L 17 3,19 L 19 :L 16 31.8 cm 362.5 cm net A 11 id 3,20 L 20 :L 17 4,20 L 20 :L 16 26 cm 385.9 cm net A 12 id 4,0 L 0 :L 17 5,0 L 0 :L 16 24.1 cm 407.6 cm net A 13 id 5,1 L 1 :L 17 6,1 L 1 :L 16 26.3 cm 431.3 cm net A 14 id 6,2 L 2 :L 17 7,2 L 2 :L 16 28.3 cm 456.7 cm net A 15 id 7,3 L 3 :L 17 8,3 L 3 :L 16 32.7 cm 486.1 cm net A 16 id 8,4 L 4 :L 17 8,19 L 11 :L 19 0 0 net A 0 id 8,20 L 12 :L 20 7,19 L 12 :L 19 64.4 cm 58 cm net A 1 id 7,20 L 13 :L 20 6,19 L 13 :L 19 44.7 cm 98.2 cm net A 2 id 6,20 L 14 :L 20 5,19 L 14 :L 19 38.9 cm 133.2 cm net A 3 id 5,20 L 15 :L 20 4,19 L 15 :L 19 36.3 cm 165.9 cm net A 4 id 4,20 L 16 :L 20 3,19 L 16 :L 19 34.8 cm 197.3 cm net A 5 id 3,20 L 17 :L 20 2,19 L 17 :L 19 32.7 cm 226.7 cm net A 6 id 2,20 L 18 :L 20 1,19 L 18 :L 19 36.7 cm 259.7 cm net A 7 id 1,20 L 19 :L 20 0,19 L 19 :L 19 45.8 cm 301 cm net A 8 id 0,20 L 20 :L 20 1,20 L 20 :L 19 51.1 cm 347 cm net A 9 id 1,0 L 0 :L 20 2,0 L 0 :L 19 72.2 cm 412 cm net A 10 id 2,1 L 1 :L 20 3,1 L 1 :L 19 67.6 cm 472.9 cm net A 11 id 3,2 L 2 :L 20 4,2 L 2 :L 19 61.1 cm 527.9 cm net A 12 id 4,3 L 3 :L 20 5,3 L 3 :L 19 56.7 cm 578.9 cm net A 13 id 5,4 L 4 :L 20 6,4 L 4 :L 19 61.9 cm 634.6 cm net A 14 id 6,5 L 5 :L 20 7,5 L 5 :L 19 91.4 cm 716.9 cm net A 15 id 7,6 L 6 :L 20 8,6 L 6 :L 19 67.3 cm 777.4 cm net A 16 id 8,7 L 7 :L 20 1 : 1/30/2009 : _080625_membrane_proto4_data_pArr1_stretch10_formatted.xls 8,16 L 8 :L 16 0 0 net A 0 id 8,17 L 9 :L 17 7,16 L 9 :L 16 31.8 cm 28.7 cm net A 1 id 7,17 L 10 :L 17 6,16 L 10 :L 16 30.9 cm 56.5 cm net A 2 id 6,17 L 11 :L 17 5,16 L 11 :L 16 32.7 cm 85.9 cm net A 3 id 5,17 L 12 :L 17 4,16 L 12 :L 16 33.3 cm 115.9 cm net A 4 id 4,17 L 13 :L 17 3,16 L 13 :L 16 33.5 cm 146.1 cm net A 5 id 3,17 L 14 :L 17 2,16 L 14 :L 16 35.5 cm 178 cm net A 6 id 2,17 L 15 :L 17 1,16 L 15 :L 16 39.8 cm 213.9 cm net A 7 id 1,17 L 16 :L 17 0,16 L 16 :L 16 45 cm 254.4 cm net A 8 id 0,17 L 17 :L 17 1,17 L 17 :L 16 48.9 cm 298.4 cm net A 9 id 1,18 L 18 :L 17 2,18 L 18 :L 16 39.4 cm 333.9 cm net A 10 id 2,19 L 19 :L 17 3,19 L 19 :L 16 31.8 cm 362.5 cm net A 11 id 3,20 L 20 :L 17 4,20 L 20 :L 16 26 cm 385.9 cm net A 12 id 4,0 L 0 :L 17 5,0 L 0 :L 16 24.1 cm 407.6 cm net A 13 id 5,1 L 1 :L 17 6,1 L 1 :L 16 26.3 cm 431.3 cm net A 14 id 6,2 L 2 :L 17 7,2 L 2 :L 16 28.3 cm 456.7 cm net A 15 id 7,3 L 3 :L 17 8,3 L 3 :L 16 32.7 cm 486.1 cm net A 16 id 8,4 L 4 :L 17 8,19 L 11 :L 19 0 0 net A 0 id 8,20 L 12 :L 20 7,19 L 12 :L 19 64.4 cm 58 cm net A 1 id 7,20 L 13 :L 20 6,19 L 13 :L 19 44.7 cm 98.2 cm net A 2 id 6,20 L 14 :L 20 5,19 L 14 :L 19 38.9 cm 133.2 cm net A 3 id 5,20 L 15 :L 20 4,19 L 15 :L 19 36.3 cm 165.9 cm net A 4 id 4,20 L 16 :L 20 3,19 L 16 :L 19 34.8 cm 197.3 cm net A 5 id 3,20 L 17 :L 20 2,19 L 17 :L 19 32.7 cm 226.7 cm net A 6 id 2,20 L 18 :L 20 1,19 L 18 :L 19 36.7 cm 259.7 cm net A 7 id 1,20 L 19 :L 20 0,19 L 19 :L 19 45.8 cm 301 cm net A 8 id 0,20 L 20 :L 20 1,20 L 20 :L 19 51.1 cm 347 cm net A 9 id 1,0 L 0 :L 20 2,0 L 0 :L 19 72.2 cm 412 cm net A 10 id 2,1 L 1 :L 20 3,1 L 1 :L 19 67.6 cm 472.9 cm net A 11 id 3,2 L 2 :L 20 4,2 L 2 :L 19 61.1 cm 527.9 cm net A 12 id 4,3 L 3 :L 20 5,3 L 3 :L 19 56.7 cm 578.9 cm net A 13 id 5,4 L 4 :L 20 6,4 L 4 :L 19 61.9 cm 634.6 cm net A 14 id 6,5 L 5 :L 20 7,5 L 5 :L 19 91.4 cm 716.9 cm net A 15 id 7,6 L 6 :L 20 8,6 L 6 :L 19 67.3 cm 777.4 cm net A 16 id 8,7 L 7 :L 20
A 8,15 L 7 :L 15 0 0 net A 0 id 8,16 L 8 :L 16 0 0 net A 0 id 8,17 L 9 :L 17 7,15 L 8 :L 15 30 cm 27 cm net A 1 id 7,16 L 9 :L 16 31.8 cm 28.7 cm net A 1 id 7,17 L 10 :L 17 6,15 L 9 :L 15 29.3 cm 53.4 cm net A 2 id 6,16 L 10 :L 16 30.9 cm 56.5 cm net A 2 id 6,17 L 11 :L 17 5,15 L 10 :L 15 28.6 cm 79.2 cm net A 3 id 5,16 L 11 :L 16 32.7 cm 85.9 cm net A 3 id 5,17 L 12 :L 17 4,15 L 11 :L 15 28.3 cm 104.6 cm net A 4 id 4,16 L 12 :L 16 33.3 cm 115.9 cm net A 4 id 4,17 L 13 :L 17 3,15 L 12 :L 15 29.7 cm 131.4 cm net A 5 id 3,16 L 13 :L 16 33.5 cm 146.1 cm net A 5 id 3,17 L 14 :L 17 2,15 L 13 :L 15 30.5 cm 158.8 cm net A 6 id 2,16 L 14 :L 16 35.5 cm 178 cm net A 6 id 2,17 L 15 :L 17 1,15 L 14 :L 15 30 cm 185.8 cm net A 7 id 1,16 L 15 :L 16 39.8 cm 213.9 cm net A 7 id 1,17 L 16 :L 17 0,15 L 15 :L 15 31.4 cm 214 cm net A 8 id 0,16 L 16 :L 16 45 cm 254.4 cm net A 8 id 0,17 L 17 :L 17 1,16 L 16 :L 15 31.4 cm 242.3 cm net A 9 id 1,17 L 17 :L 16 48.9 cm 298.4 cm net A 9 id 1,18 L 18 :L 17 2,17 L 17 :L 15 26.3 cm 266 cm net A 10 id 2,18 L 18 :L 16 39.4 cm 333.9 cm net A 10 id 2,19 L 19 :L 17 3,18 L 18 :L 15 23 cm 286.8 cm net A 11 id 3,19 L 19 :L 16 31.8 cm 362.5 cm net A 11 id 3,20 L 20 :L 17 4,19 L 19 :L 15 24.5 cm 308.8 cm net A 12 id 4,20 L 20 :L 16 26 cm 385.9 cm net A 12 id 4,0 L 0 :L 17 5,20 L 20 :L 15 18.4 cm 325.4 cm net A 13 id 5,0 L 0 :L 16 24.1 cm 407.6 cm net A 13 id 5,1 L 1 :L 17 6,0 L 0 :L 15 18.2 cm 341.8 cm net A 14 id 6,1 L 1 :L 16 26.3 cm 431.3 cm net A 14 id 6,2 L 2 :L 17 7,1 L 1 :L 15 19.3 cm 359.1 cm net A 15 id 7,2 L 2 :L 16 28.3 cm 456.7 cm net A 15 id 7,3 L 3 :L 17 8,2 L 2 :L 15 20.4 cm 377.5 cm net A 16 id 8,3 L 3 :L 16 32.7 cm 486.1 cm net A 16 id 8,4 L 4 :L 17 8,18 L 10 :L 18 0 0 net A 0 id 8,19 L 11 :L 19 0 0 net A 0 id 8,20 L 12 :L 20 7,18 L 11 :L 18 32.6 cm 29.3 cm net A 1 id 7,19 L 12 :L 19 64.4 cm 58 cm net A 1 id 7,20 L 13 :L 20 6,18 L 12 :L 18 40.6 cm 65.9 cm net A 2 id 6,19 L 13 :L 19 44.7 cm 98.2 cm net A 2 id 6,20 L 14 :L 20 5,18 L 13 :L 18 40.5 cm 102.3 cm net A 3 id 5,19 L 14 :L 19 38.9 cm 133.2 cm net A 3 id 5,20 L 15 :L 20 4,18 L 14 :L 18 41.9 cm 140 cm net A 4 id 4,19 L 15 :L 19 36.3 cm 165.9 cm net A 4 id 4,20 L 16 :L 20 3,18 L 15 :L 18 44 cm 179.7 cm net A 5 id 3,19 L 16 :L 19 34.8 cm 197.3 cm net A 5 id 3,20 L 17 :L 20 2,18 L 16 :L 18 47.5 cm 222.4 cm net A 6 id 2,19 L 17 :L 19 32.7 cm 226.7 cm net A 6 id 2,20 L 18 :L 20 1,18 L 17 :L 18 45.4 cm 263.2 cm net A 7 id 1,19 L 18 :L 19 36.7 cm 259.7 cm net A 7 id 1,20 L 19 :L 20 0,18 L 18 :L 18 39.7 cm 299 cm net A 8 id 0,19 L 19 :L 19 45.8 cm 301 cm net A 8 id 0,20 L 20 :L 20 1,19 L 19 :L 18 39.7 cm 334.8 cm net A 9 id 1,20 L 20 :L 19 51.1 cm 347 cm net A 9 id 1,0 L 0 :L 20 2,20 L 20 :L 18 32 cm 363.5 cm net A 10 id 2,0 L 0 :L 19 72.2 cm 412 cm net A 10 id 2,1 L 1 :L 20 3,0 L 0 :L 18 41.8 cm 401.2 cm net A 11 id 3,1 L 1 :L 19 67.6 cm 472.9 cm net A 11 id 3,2 L 2 :L 20 4,1 L 1 :L 18 49.3 cm 445.6 cm net A 12 id 4,2 L 2 :L 19 61.1 cm 527.9 cm net A 12 id 4,3 L 3 :L 20 5,2 L 2 :L 18 50.1 cm 490.7 cm net A 13 id 5,3 L 3 :L 19 56.7 cm 578.9 cm net A 13 id 5,4 L 4 :L 20 6,3 L 3 :L 18 52.3 cm 537.7 cm net A 14 id 6,4 L 4 :L 19 61.9 cm 634.6 cm net A 14 id 6,5 L 5 :L 20 7,4 L 4 :L 18 59.6 cm 591.4 cm net A 15 id 7,5 L 5 :L 19 91.4 cm 716.9 cm net A 15 id 7,6 L 6 :L 20 8,5 L 5 :L 18 181.6 cm 754.9 cm net A 16 id 8,6 L 6 :L 19 67.3 cm 777.4 cm net A 16 id 8,7 L 7 :L 20 1 : 1/30/2009
0 0 net A 0 id 8,15 L 7 :L 15 0 0 net A 0 id 8,16 L 8 :L 16 0 0 net A 0 id 8,17 28.6 cm 25.8 cm net A 1 id 7,15 L 8 :L 15 30 cm 27 cm net A 1 id 7,16 L 9 :L 16 31.8 cm 28.7 cm net A 1 id 7,17 27.9 cm 50.9 cm net A 2 id 6,15 L 9 :L 15 29.3 cm 53.4 cm net A 2 id 6,16 L 10 :L 16 30.9 cm 56.5 cm net A 2 id 6,17 26.5 cm 74.8 cm net A 3 id 5,15 L 10 :L 15 28.6 cm 79.2 cm net A 3 id 5,16 L 11 :L 16 32.7 cm 85.9 cm net A 3 id 5,17 26 cm 98.2 cm net A 4 id 4,15 L 11 :L 15 28.3 cm 104.6 cm net A 4 id 4,16 L 12 :L 16 33.3 cm 115.9 cm net A 4 id 4,17 25.6 cm 121.3 cm net A 5 id 3,15 L 12 :L 15 29.7 cm 131.4 cm net A 5 id 3,16 L 13 :L 16 33.5 cm 146.1 cm net A 5 id 3,17 25.6 cm 144.3 cm net A 6 id 2,15 L 13 :L 15 30.5 cm 158.8 cm net A 6 id 2,16 L 14 :L 16 35.5 cm 178 cm net A 6 id 2,17 27.1 cm 168.7 cm net A 7 id 1,15 L 14 :L 15 30 cm 185.8 cm net A 7 id 1,16 L 15 :L 16 39.8 cm 213.9 cm net A 7 id 1,17 27.3 cm 193.2 cm net A 8 id 0,15 L 15 :L 15 31.4 cm 214 cm net A 8 id 0,16 L 16 :L 16 45 cm 254.4 cm net A 8 id 0,17 25.6 cm 216.3 cm net A 9 id 1,16 L 16 :L 15 31.4 cm 242.3 cm net A 9 id 1,17 L 17 :L 16 48.9 cm 298.4 cm net A 9 id 1,18 24.3 cm 238.2 cm net A 10 id 2,17 L 17 :L 15 26.3 cm 266 cm net A 10 id 2,18 L 18 :L 16 39.4 cm 333.9 cm net A 10 id 2,19 20.3 cm 256.5 cm net A 11 id 3,18 L 18 :L 15 23 cm 286.8 cm net A 11 id 3,19 L 19 :L 16 31.8 cm 362.5 cm net A 11 id 3,20 16.2 cm 271.1 cm net A 12 id 4,19 L 19 :L 15 24.5 cm 308.8 cm net A 12 id 4,20 L 20 :L 16 26 cm 385.9 cm net A 12 id 4,0 19.4 cm 288.6 cm net A 13 id 5,20 L 20 :L 15 18.4 cm 325.4 cm net A 13 id 5,0 L 0 :L 16 24.1 cm 407.6 cm net A 13 id 5,1 18.9 cm 305.6 cm net A 14 id 6,0 L 0 :L 15 18.2 cm 341.8 cm net A 14 id 6,1 L 1 :L 16 26.3 cm 431.3 cm net A 14 id 6,2 16.8 cm 320.8 cm net A 15 id 7,1 L 1 :L 15 19.3 cm 359.1 cm net A 15 id 7,2 L 2 :L 16 28.3 cm 456.7 cm net A 15 id 7,3 17.8 cm 336.8 cm net A 16 id 8,2 L 2 :L 15 20.4 cm 377.5 cm net A 16 id 8,3 L 3 :L 16 32.7 cm 486.1 cm net A 16 id 8,4 0 0 net A 0 id 8,18 L 10 :L 18 0 0 net A 0 id 8,19 L 11 :L 19 0 0 net A 0 id 8,20 35.2 cm 31.7 cm net A 1 id 7,18 L 11 :L 18 32.6 cm 29.3 cm net A 1 id 7,19 L 12 :L 19 64.4 cm 58 cm net A 1 id 7,20 34.9 cm 63.1 cm net A 2 id 6,18 L 12 :L 18 40.6 cm 65.9 cm net A 2 id 6,19 L 13 :L 19 44.7 cm 98.2 cm net A 2 id 6,20 34.7 cm 94.4 cm net A 3 id 5,18 L 13 :L 18 40.5 cm 102.3 cm net A 3 id 5,19 L 14 :L 19 38.9 cm 133.2 cm net A 3 id 5,20 37.8 cm 128.4 cm net A 4 id 4,18 L 14 :L 18 41.9 cm 140 cm net A 4 id 4,19 L 15 :L 19 36.3 cm 165.9 cm net A 4 id 4,20 44.4 cm 168.4 cm net A 5 id 3,18 L 15 :L 18 44 cm 179.7 cm net A 5 id 3,19 L 16 :L 19 34.8 cm 197.3 cm net A 5 id 3,20 49.1 cm 212.6 cm net A 6 id 2,18 L 16 :L 18 47.5 cm 222.4 cm net A 6 id 2,19 L 17 :L 19 32.7 cm 226.7 cm net A 6 id 2,20 68.3 cm 274 cm net A 7 id 1,18 L 17 :L 18 45.4 cm 263.2 cm net A 7 id 1,19 L 18 :L 19 36.7 cm 259.7 cm net A 7 id 1,20 115.2 cm 377.7 cm net A 8 id 0,18 L 18 :L 18 39.7 cm 299 cm net A 8 id 0,19 L 19 :L 19 45.8 cm 301 cm net A 8 id 0,20 101.4 cm 469 cm net A 9 id 1,19 L 19 :L 18 39.7 cm 334.8 cm net A 9 id 1,20 L 20 :L 19 51.1 cm 347 cm net A 9 id 1,0 52.9 cm 516.7 cm net A 10 id 2,20 L 20 :L 18 32 cm 363.5 cm net A 10 id 2,0 L 0 :L 19 72.2 cm 412 cm net A 10 id 2,1 35 cm 548.2 cm net A 11 id 3,0 L 0 :L 18 41.8 cm 401.2 cm net A 11 id 3,1 L 1 :L 19 67.6 cm 472.9 cm net A 11 id 3,2 31.6 cm 576.6 cm net A 12 id 4,1 L 1 :L 18 49.3 cm 445.6 cm net A 12 id 4,2 L 2 :L 19 61.1 cm 527.9 cm net A 12 id 4,3 38.3 cm 611.1 cm net A 13 id 5,2 L 2 :L 18 50.1 cm 490.7 cm net A 13 id 5,3 L 3 :L 19 56.7 cm 578.9 cm net A 13 id 5,4 42 cm 648.9 cm net A 14 id 6,3 L 3 :L 18 52.3 cm 537.7 cm net A 14 id 6,4 L 4 :L 19 61.9 cm 634.6 cm net A 14 id 6,5 52.3 cm 695.9 cm net A 15 id 7,4 L 4 :L 18 59.6 cm 591.4 cm net A 15 id 7,5 L 5 :L 19 91.4 cm 716.9 cm net A 15 id 7,6 104.2 cm 789.7 cm net A 16 id 8,5 L 5 :L 18 181.6 cm 754.9 cm net A 16 id 8,6 L 6 :L 19 67.3 cm 777.4 cm net A 16 id 8,7 1 : 1/30/2009 : _080625_membrane_proto4_data_pArr1_stretch10_formatted.xls 49 2.1-22

2.1-23 digital layout of lines for fabrication of net. the values above and below the line represent that actual distance computationally (below) and the adjusted distance reduced to consider stretch in the string material used for fabrication. the reducing the lengths, this insured that we would be construction a tensioned net without adding further tensioning mechanisms.

2.1-24 detail of one of the lines for fabrication. the ‘x’ indicates an anchored point for that end of the line.

2.1-25 measuring and location of nodes on string material. the material is 2.5mm nylon string.

2.1-26 setup for measuring overall line length and location nodes along line.

2.1-27 series of strings measured and tagged with node locations.

4.0_237mm 4.1_280mm 4.1_517mm 4.2_331mm 4.2_848mm 4.3_395mm 4.3_1243mm 4.4_471mm 4.4_1713mm 4.5_474mm 4.5_2187mm 4.6_337mm 4.6_2524mm 4.7_337mm 4.7_2861mm 5.0_188mm 5.0_188mm 5.1_225mm 5.1_412mm 5.2_272mm 5.2_684mm 5.3_337mm 5.3_1020mm 5.4_436mm 5.4_1456mm 5.5_670mm 5.5_2126mm 5.6_1370mm 5.6_3496mm 6.0_145mm 6.0_145mm 6.1_170mm 6.1_315mm 6.2_201mm 6.2_516mm 6.3_234mm 6.3_750mm 6.4_270mm 6.4_1020mm 6.5_333mm 6.5_1353mm 6.6_409mm 6.6_1763mm 6.7_409mm 6.7_2172mm 6.8_370mm 6.8_2542mm 6.9_371mm 6.9_2913mm 7.0_115mm 7.0_115mm 7.1_129mm 7.1_244mm 7.2_146mm 7.2_391mm 7.3_165mm 7.3_555mm 7.4_182mm 7.4_737mm 7.5_204mm 7.5_941mm 7.6_227mm 7.6_1168mm 7.7_227mm 7.7_1395mm 7.8_150mm 7.8_1545mm 7.9_161mm 7.9_1706mm 7.10_237mm 7.10_1943mm 7.11_243mm 7.11_2186mm 7.12_244mm 7.12_2430mm 7.13_284mm 7.13_2713mm 8.0_101mm 8.0_101mm 8.1_103mm 8.1_204mm 8.2_111mm 8.2_315mm 8.3_120mm 8.3_435mm 8.4_129mm 8.4_564mm 8.5_138mm 8.5_702mm 8.6_147mm 8.6_848mm 8.7_147mm 8.7_995mm 8.8_125mm 8.8_1120mm 8.9_66mm 8.9_1186mm 8.10_120mm 8.10_1306mm 8.11_185mm 8.11_1491mm 8.12_219mm 8.12_1710mm 8.13_246mm 8.13_1956mm 8_totalLength: 1956mm stretchFactor: 2 9.0_103mm 9.0_103mm 9.1_93mm 9.1_196mm 9.2_91mm 9.2_287mm 9.3_94mm 9.3_381mm 9.4_98mm 9.4_479mm 9.5_101mm 9.5_581mm 9.6_105mm 9.6_685mm 9.7_105mm 9.7_790mm 9.8_97mm 9.8_886mm 9.9_79mm 9.9_965mm 9.10_71mm 9.10_1036mm 9.11_123mm 9.11_1158mm 9.12_175mm 9.12_1333mm 9.13_216mm 9.13_1549mm 9_totalLength: 1549mm stretchFactor: 2 10.0_129mm 10.0_129mm 10.1_97mm 10.1_226mm 10.2_84mm 10.2_310mm 10.3_82mm 10.3_392mm 10.4_83mm 10.4_476mm 10.5_85mm 10.5_560mm 10.6_85mm 10.6_646mm 10.7_85mm 10.7_731mm 10.8_83mm 10.8_814mm 10.9_78mm 10.9_892mm 10.10_78mm 10.10_970mm 10.11_98mm 10.11_1069mm 10.12_139mm 10.12_1208mm 10.13_184mm 10.13_1391mm 10_totalLength: 1391mm stretchFactor: 2 11.0_187mm 11.0_187mm 11.1_120mm 11.1_307mm 11.2_86mm 11.2_393mm 11.3_78mm 11.3_470mm 11.4_80mm 11.4_550mm 11.5_83mm 11.5_633mm 11.6_83mm 11.6_717mm 11.7_83mm 11.7_800mm 11.8_83mm 11.8_883mm 11.9_83mm 11.9_966mm 11.10_86mm 11.10_1052mm 11.11_98mm 11.11_1150mm 11.12_123mm 11.12_1273mm 11.13_159mm 11.13_1432mm 11_totalLength: 1432mm stretchFactor: 2 12.0_301mm 12.0_301mm 12.1_161mm 12.1_461mm 12.2_93mm 12.2_555mm 12.3_74mm 12.3_629mm 12.4_82mm 12.4_712mm 12.5_91mm 12.5_803mm 12.6_94mm 12.6_897mm 12.7_94mm 12.7_992mm 12.8_94mm 12.8_1085mm 12.9_94mm 12.9_1179mm 12.10_96mm 12.10_1275mm 12.11_103mm 12.11_1378mm 12.12_119mm 12.12_1497mm 12.13_144mm 12.13_1641mm 12_totalLength: 1641mm stretchFactor: 2 total(model)Length: 1674mm 13.0_136mm 13.0_136mm 13.1_120mm 13.1_255mm 13.2_111mm 13.2_367mm 13.3_109mm 13.3_476mm 13.4_110mm 13.4_586mm 13.5_114mm 13.5_700mm 13.6_118mm 13.6_817mm 13.7_118mm 13.7_935mm 13.8_109mm 13.8_1044mm 13.9_90mm 13.9_1134mm 13.10_70mm 13.10_1205mm 13.11_84mm 13.11_1289mm 13.12_80mm 13.12_1369mm 13.13_275mm 13.13_1644mm 13_totalLength: 1644mm stretchFactor: 2 total(model)Length: 1678mm 14.0_131mm 14.0_131mm 14.1_124mm 14.1_256mm 14.2_125mm 14.2_380mm 14.3_130mm 14.3_510mm 14.4_139mm 14.4_649mm 14.5_150mm 14.5_799mm 14.6_158mm 14.6_957mm 14.7_158mm 14.7_1115mm 14.8_142mm 14.8_1258mm 14.9_104mm 14.9_1362mm 14.10_78mm 14.10_1440mm 14.11_83mm 14.11_1523mm 14.12_135mm 14.12_1658mm 14.13_161mm 14.13_1820mm 14_totalLength: 1820mm stretchFactor: 2 total(model)Length: 1857mm 15.0_132mm 15.0_132mm 15.1_137mm 15.1_269mm 15.2_151mm 15.2_421mm 15.3_170mm 15.3_590mm 15.4_190mm 15.4_780mm 15.5_212mm 15.5_992mm 15.6_228mm 15.6_1220mm 15.7_228mm 15.7_1448mm 15.8_181mm 15.8_1629mm 15.9_98mm 15.9_1727mm 15.10_109mm 15.10_1835mm 15.11_93mm 15.11_1928mm 15.12_97mm 15.12_2025mm 15.13_103mm 15.13_2128mm 15_totalLength: 2128mm stretchFactor: 2 total(model)Length: 16.0_143mm 16.0_143mm 16.1_169mm 16.1_312mm 16.2_207mm 16.2_519mm 16.3_243mm 16.3_762mm 16.4_275mm 16.4_1037mm 16.5_317mm 16.5_1354mm 16.6_365mm 16.6_1719mm 16.7_365mm 16.7_2085mm 16.8_218mm 16.8_2302mm 16.9_203mm 16.9_2505mm 16.10_138mm 16.10_2642mm 17.0_176mm 17.0_176mm 17.1_240mm 17.1_417mm 17.2_313mm 17.2_729mm 17.3_346mm 17.3_1075mm 17.4_403mm 17.4_1479mm 17.5_554mm 17.5_2033mm 17.6_1025mm 17.6_3058mm 18.0_266mm 18.0_266mm 18.1_407mm 18.1_672mm 18.2_393mm 18.2_1066mm 18.3_390mm 18.3_1455mm 18.4_409mm 18.4_1864mm 18.5_398mm 18.5_2262mm 18.6_236mm 18.6_2498mm 18.7_236mm 18.7_2733mm 19.0_671mm 19.0_671mm 19.1_424mm 19.1_1096mm 19.2_343mm 19.2_1439mm 19.3_309mm 19.3_1748mm 19.4_258mm 19.4_2006mm 19.5_206mm 19.5_2212mm 19.6_253mm 19.6_2465mm 19.7_253mm 19.7_2718mm 0.0_446mm 0.0_446mm 0.1_647mm 0.1_1093mm 0.2_431mm 0.2_1525mm 0.3_351mm 0.3_1876mm 0.4_379mm 0.4_2255mm 0.5_522mm 0.5_2777mm 1.0_339mm 1.0_339mm 1.1_379mm 1.1_717mm 1.2_411mm 1.2_1129mm 1.3_353mm 1.3_1482mm 1.4_316mm 1.4_1798mm 1.5_321mm 1.5_2119mm 1.6_357mm 1.6_2476mm 1.7_357mm 1.7_2833mm 2.0_313mm 2.0_313mm 2.1_332mm 2.1_645mm 2.2_340mm 2.2_985mm 2.3_318mm 2.3_1303mm 2.4_268mm 2.4_1571mm 2.5_253mm 2.5_1824mm 2.6_253mm 2.6_2077mm 2.7_253mm 2.7_2330mm 2.8_224mm 2.8_2554mm 2.9_171mm 2.9_2726mm 3.0_283mm 3.0_283mm 3.1_317mm 3.1_600mm 3.2_349mm 3.2_949mm 3.3_359mm 3.3_1308mm 3.4_302mm 3.4_1610mm 3.5_199mm 3.5_1809mm 3.6_226mm 3.6_2035mm 3.7_226mm 3.7_2261mm 3.8_220mm 3.8_2481mm 3.9_218mm 3.9_2699mm 4.0_237mm 4.0_237mm 4.1_280mm 4.1_517mm 4.2_331mm 4.2_848mm 4.3_395mm 4.3_1243mm 4.4_471mm 4.4_1713mm 5.0_188mm 5.0_188mm 5.1_225mm 5.1_412mm 5.2_272mm 5.2_684mm 5.3_337mm 5.3_1020mm 5.4_436mm 5.4_1456mm 5.5_670mm 5.5_2126mm 6.0_145mm 6.0_145mm 6.1_170mm 6.1_315mm 6.2_201mm 6.2_516mm 6.3_234mm 6.3_750mm 6.4_270mm 6.4_1020mm 6.5_333mm 6.5_1353mm 6.6_409mm 6.6_1763mm 7.0_115mm 7.0_115mm 7.1_129mm 7.1_244mm 7.2_146mm 7.2_391mm 7.3_165mm 7.3_555mm 7.4_182mm 7.4_737mm 7.5_204mm 7.5_941mm 7.6_227mm 7.6_1168mm 7.7_227mm 7.7_1395mm 7.8_150mm 7.8_1545mm 7.9_161mm 7.9_1706mm 8.0_101mm 8.0_101mm 8.1_103mm 8.1_204mm 8.2_111mm 8.2_315mm 8.3_120mm 8.3_435mm 8.4_129mm 8.4_564mm 8.5_138mm 8.5_702mm 8.6_147mm 8.6_848mm 8.7_147mm 8.7_995mm 8.8_125mm 8.8_1120mm 8.9_66mm 8.9_1186mm 8.10_120mm 8.10_1306mm 8.11_185mm 8.11_1491mm 8.12_219mm 8.12_1710mm 9.0_103mm 9.0_103mm 9.1_93mm 9.1_196mm 9.2_91mm 9.2_287mm 9.3_94mm 9.3_381mm 9.4_98mm 9.4_479mm 9.5_101mm 9.5_581mm 9.6_105mm 9.6_685mm 9.7_105mm 9.7_790mm 9.8_97mm 9.8_886mm 9.9_79mm 9.9_965mm 9.10_71mm 9.10_1036mm 9.11_123mm 9.11_1158mm 9.12_175mm 9.12_1333mm 9.13_216mm 9.13_1549mm 9_totalLength: 1549mm 10.0_129mm 10.0_129mm 10.1_97mm 10.1_226mm 10.2_84mm 10.2_310mm 10.3_82mm 10.3_392mm 10.4_83mm 10.4_476mm 10.5_85mm 10.5_560mm 10.6_85mm 10.6_646mm 10.7_85mm 10.7_731mm 10.8_83mm 10.8_814mm 10.9_78mm 10.9_892mm 10.10_78mm 10.10_970mm 10.11_98mm 10.11_1069mm 10.12_139mm 10.12_1208mm 10.13_184mm 10.13_1391mm 10_totalLength: 1391mm stretchFactor: 11.0_187mm 11.0_187mm 11.1_120mm 11.1_307mm 11.2_86mm 11.2_393mm 11.3_78mm 11.3_470mm 11.4_80mm 11.4_550mm 11.5_83mm 11.5_633mm 11.6_83mm 11.6_717mm 11.7_83mm 11.7_800mm 11.8_83mm 11.8_883mm 11.9_83mm 11.9_966mm 11.10_86mm 11.10_1052mm 11.11_98mm 11.11_1150mm 11.12_123mm 11.12_1273mm 11.13_159mm 11.13_1432mm 11_totalLength: 1432mm stretchFactor: 12.0_301mm 12.0_301mm 12.1_161mm 12.1_461mm 12.2_93mm 12.2_555mm 12.3_74mm 12.3_629mm 12.4_82mm 12.4_712mm 12.5_91mm 12.5_803mm 12.6_94mm 12.6_897mm 12.7_94mm 12.7_992mm 12.8_94mm 12.8_1085mm 12.9_94mm 12.9_1179mm 12.10_96mm 12.10_1275mm 12.11_103mm 12.11_1378mm 12.12_119mm 12.12_1497mm 12.13_144mm 12.13_1641mm 12_totalLength: 13.0_136mm 13.0_136mm 13.1_120mm 13.1_255mm 13.2_111mm 13.2_367mm 13.3_109mm 13.3_476mm 13.4_110mm 13.4_586mm 13.5_114mm 13.5_700mm 13.6_118mm 13.6_817mm 13.7_118mm 13.7_935mm 13.8_109mm 13.8_1044mm 13.9_90mm 13.9_1134mm 13.10_70mm 13.10_1205mm 13.11_84mm 13.11_1289mm 13.12_80mm 13.12_1369mm 13.13_275mm 13.13_1644mm 13_totalLength: 14.0_131mm 14.0_131mm 14.1_124mm 14.1_256mm 14.2_125mm 14.2_380mm 14.3_130mm 14.3_510mm 14.4_139mm 14.4_649mm 14.5_150mm 14.5_799mm 14.6_158mm 14.6_957mm 14.7_158mm 14.7_1115mm 14.8_142mm 14.8_1258mm 14.9_104mm 14.9_1362mm 14.10_78mm 14.10_1440mm 14.11_83mm 14.11_1523mm 14.12_135mm 14.12_1658mm 14.13_161mm 14.13_1820mm 15.0_132mm 15.0_132mm 15.1_137mm 15.1_269mm 15.2_151mm 15.2_421mm 15.3_170mm 15.3_590mm 15.4_190mm 15.4_780mm 15.5_212mm 15.5_992mm 15.6_228mm 15.6_1220mm 15.7_228mm 15.7_1448mm 15.8_181mm 15.8_1629mm 15.9_98mm 15.9_1727mm 16.0_143mm 16.0_143mm 16.1_169mm 16.1_312mm 16.2_207mm 16.2_519mm 16.3_243mm 16.3_762mm 16.4_275mm 16.4_1037mm 16.5_317mm 16.5_1354mm 16.6_365mm 16.6_1719mm 17.0_176mm 17.0_176mm 17.1_240mm 17.1_417mm 17.2_313mm 17.2_729mm 17.3_346mm 17.3_1075mm 17.4_403mm 17.4_1479mm 17.5_554mm 17.5_2033mm 18.0_266mm 18.0_266mm 18.1_407mm 18.1_672mm 18.2_393mm 18.2_1066mm 18.3_390mm 18.3_1455mm 18.4_409mm 18.4_1864mm 19.0_671mm 19.0_671mm 19.1_424mm 19.1_1096mm 19.2_343mm 19.2_1439mm 19.3_309mm 19.3_1748mm 0.0_446mm 0.0_446mm 0.1_647mm 0.1_1093mm 0.2_431mm 0.2_1525mm 0.3_351mm 0.3_1876mm 1.0_339mm 1.0_339mm 1.1_379mm 1.1_717mm 1.2_411mm 1.2_1129mm 1.3_353mm 1.3_1482mm 1.4_316mm 1.4_1798mm 2.0_313mm 2.0_313mm 2.1_332mm 2.1_645mm 2.2_340mm 2.2_985mm 2.3_318mm 2.3_1303mm 2.4_268mm 2.4_1571mm 2.5_253mm 2.5_1824mm 3.0_283mm 3.0_283mm 3.1_317mm 3.1_600mm 3.2_349mm 3.2_949mm 3.3_359mm 3.3_1308mm 3.4_302mm 3.4_1610mm 3.5_199mm 3.5_1809mm 4.0_237mm 50 embedded fabrication
2.1-23 2.1-24 2.1-25 2.1.3
Data Mining for Fabrication through Node ID
4.8_273mm 4.8_3134mm 4.9_231mm 4.9_3365mm 4.10_236mm 4.10_3601mm 4.11_333mm 4.11_3933mm 4.12_486mm 4.12_4420mm 4.13_189mm 4.13_4609mm 4_totalLength: 4609mm stretchFactor: 2 5.7_1282mm 5.7_4778mm 5.8_589mm 5.8_5366mm 5.9_351mm 5.9_5718mm 5.10_245mm 5.10_5963mm 5.11_212mm 5.11_6175mm 5.12_403mm 5.12_6577mm 6.9_371mm 6.10_296mm 6.10_3209mm 6.11_240mm 6.11_3449mm 6.12_230mm 6.12_3679mm 6.13_412mm 6.13_4091mm 6_totalLength: 4091mm stretchFactor: 2 7_totalLength: 2713mm stretchFactor: 2 total(model)Length: 2171mm 16.11_100mm 16.11_2742mm 16.12_97mm 16.12_2840mm 16.13_104mm 16.13_2944mm 16_totalLength: 2944mm stretchFactor: 2 total(model)Length: 3004mm 17.7_846mm 17.7_3904mm 17.8_369mm 17.8_4273mm 17.9_202mm 17.9_4475mm 17.10_143mm 17.10_4618mm 17.11_146mm 17.11_4764mm 17.12_162mm 17.12_4926mm 17.13_189mm 17.13_5115mm 17_totalLength: 5115mm stretchFactor: 2 total(model)Length: 5220mm 18.8_180mm 18.8_2913mm 18.9_193mm 18.9_3106mm 18.10_224mm 18.10_3330mm 18.11_246mm 18.11_3576mm 18.12_339mm 18.12_3915mm 18.13_820mm 18.13_4735mm 18_totalLength: 4735mm stretchFactor: 2 total(model)Length: 4832mm 19.8_349mm 19.8_3067mm 19.9_349mm 19.9_3416mm 19.10_317mm 19.10_3733mm 19.11_310mm 19.11_4042mm 19.12_409mm 19.12_4452mm 19.13_1391mm 19.13_5843mm 19_totalLength: 5843mm stretchFactor: 2 total(model)Length: 0.6_983mm 0.6_3760mm 0.7_860mm 0.7_4620mm 0.8_396mm 0.8_5016mm 0.9_244mm 0.9_5260mm 0.10_211mm 0.10_5471mm 0.11_226mm 0.11_5698mm 0.12_247mm 0.12_5944mm 0.13_275mm 0.13_6219mm 0_totalLength: 1.8_247mm 1.8_3080mm 1.9_229mm 1.9_3309mm 1.10_173mm 1.10_3482mm 1.11_150mm 1.11_3633mm 1.12_154mm 1.12_3786mm 1.13_161mm 1.13_3948mm 1_totalLength: 3948mm stretchFactor: 2 total(model)Length: 4028mm 2.9_171mm 2.10_154mm 2.10_2880mm 2.11_106mm 2.11_2985mm 2.12_97mm 2.12_3083mm 2.13_103mm 2.13_3185mm 2_totalLength: 3185mm stretchFactor: 2 total(model)Length: 3250mm 3.10_228mm 3.10_2927mm 3.11_217mm 3.11_3144mm 3.12_94mm 3.12_3237mm 3.13_104mm 3.13_3342mm 3_totalLength: 3342mm stretchFactor: 2 total(model)Length: 3410mm 4.5_474mm 4.5_2187mm 4.6_337mm 4.6_2524mm 4.7_337mm 4.7_2861mm 4.8_273mm 4.8_3134mm 4.9_231mm 4.9_3365mm 4.10_236mm 4.10_3601mm 4.11_333mm 4.11_3933mm 4.12_486mm 4.12_4420mm 5.6_1370mm 5.6_3496mm 5.7_1282mm 5.7_4778mm 6.7_409mm 6.7_2172mm 6.8_370mm 6.8_2542mm 6.9_371mm 6.9_2913mm 6.10_296mm 6.10_3209mm 6.11_240mm 6.11_3449mm 6.12_230mm 6.12_3679mm 6.13_412mm 6.13_4091mm 7.10_237mm 7.10_1943mm 7.11_243mm 7.11_2186mm 7.12_244mm 7.12_2430mm 7.13_284mm 7.13_2713mm 7_totalLength: 2713mm stretchFactor: 2 8.13_246mm 8.13_1956mm 8_totalLength: 1956mm stretchFactor: 2 1549mm stretchFactor: 2 stretchFactor: 2 stretchFactor: 2 12_totalLength: 1641mm stretchFactor: 2 total(model)Length: 1674mm 13_totalLength: 1644mm stretchFactor: 2 total(model)Length: 1678mm 14.13_161mm 14.13_1820mm 14_totalLength: 1820mm stretchFactor: 2 total(model)Length: 1857mm 15.9_98mm 15.9_1727mm 15.10_109mm 15.10_1835mm 15.11_93mm 15.11_1928mm 15.12_97mm 15.12_2025mm 15.13_103mm 15.13_2128mm 15_totalLength: 2128mm stretchFactor: 2 total(model)Length: 2171mm 16.7_365mm 16.7_2085mm 16.8_218mm 16.8_2302mm 16.9_203mm 16.9_2505mm 16.10_138mm 16.10_2642mm 16.11_100mm 16.11_2742mm 16.12_97mm 16.12_2840mm 16.13_104mm 16.13_2944mm 16_totalLength: 2944mm stretchFactor: 2 total(model)Length: 3004mm 17.6_1025mm 17.6_3058mm 17.7_846mm 17.7_3904mm 17.8_369mm 17.8_4273mm 18.5_398mm 18.5_2262mm 18.6_236mm 18.6_2498mm 18.7_236mm 18.7_2733mm 18.8_180mm 18.8_2913mm 18.9_193mm 18.9_3106mm 18.10_224mm 18.10_3330mm 18.11_246mm 18.11_3576mm 18.12_339mm 18.12_3915mm 18.13_820mm 18.13_4735mm 19.4_258mm 19.4_2006mm 0.4_379mm 0.4_2255mm 0.5_522mm 0.5_2777mm 0.6_983mm 0.6_3760mm 0.7_860mm 0.7_4620mm 1.5_321mm 1.5_2119mm 1.6_357mm 1.6_2476mm 1.7_357mm 1.7_2833mm 1.8_247mm 1.8_3080mm 1.9_229mm 1.9_3309mm 1.10_173mm 1.10_3482mm 1.11_150mm 1.11_3633mm 1.12_154mm 1.12_3786mm 1.13_161mm 1.13_3948mm 1_totalLength: 2.6_253mm 2.6_2077mm 2.7_253mm 2.7_2330mm 2.8_224mm 2.8_2554mm 2.9_171mm 2.9_2726mm 2.10_154mm 2.10_2880mm 2.11_106mm 2.11_2985mm 2.12_97mm 2.12_3083mm 2.13_103mm 2.13_3185mm 2_totalLength: 3185mm stretchFactor: 2 total(model)Length: 3250mm 3.5_199mm 3.6_226mm 3.6_2035mm 3.7_226mm 3.7_2261mm 3.8_220mm 3.8_2481mm 3.9_218mm 3.9_2699mm 3.10_228mm 3.10_2927mm 3.11_217mm 3.11_3144mm 3.12_94mm 3.12_3237mm 3.13_104mm 3.13_3342mm 3_totalLength: 3342mm stretchFactor: 2 total(model)Length: 3410mm 51 2.1-26 2.1-27

2.1-28 node and ID tags in completed installation. the node is fixed with a cable tie, connecting the two lines that cross at this particular node. the node is “form-found” through the procedure of locking the two lines together (line 19 and line 17 in the photo). the node is not determined through the input of a coordinate (x,y,z) position. the arrangement of the net is derived through the connecting of the nodes - by tracking common node IDs across different lines, and locking them together.

2.1-29 anchors for the ceiling. the extension bolts allowed for some degree of post tension in the installation.

2.1-30 node at which 2 nets are locked together. an 8-way node is generated when the nodes of nets A and B are locked together.

2.1-31 nodes for nets A and B. the two different string patterns signify the difference between net A and net B. this distinction is also noted on the tags.

52
2.1-28
2.1.3 Data Mining for Fabrication through Node ID embedded fabrication 1 2 3 4
2.1-29
53 2.1-31 2.1-30 7 6 5 8 1 3 4 2

2.1-28 node and ID tags in completed installation. the node is fixed with a cable tie, connecting the two lines that cross at this particular node. the node is “form-found” through the procedure of locking the two lines together (line 19 and line 17 in the photo). the node is not determined through the input of a coordinate (x,y,z) position. the arrangement of the net is derived through the connecting of the nodes - by tracking common node IDs across different lines, and locking them together.

2.1-29

comupational compression member. the function for generating compression elements exists within the dynamic relaxation process in Processing. a compression element is a spring that exterts a pushing force (its actual length is shorter than it rest length). in this scenario the size and amount of force is parametric to the distance between neighboring particles. therefore, the size of the compression member has to be solved during the dynamic relaxation process. the spring incrementally expands and gains strength to eventually meet the criteria set for it - in this case, a length that equals 1/2 the distance between 2 neighboring particles.

2.1-30 connection element for compression member. at certain nodes an additional spring element was introduced to simulate a compression member and push the nets apart in certain places. this pin is located at those nodes and anchors the insertion of an aluminum rod.

2.1-31

compression members in installation. the compression members provide secondary, local post-tensioning for the net. they also articulate the spatial characteristics of the overall structure. as the installation is created of two nets (one inside the other), there are moments where the nets are pushed apart from eachother by the compression members, creating gaps between the two surfaces.

2.1-32

compression member spanning across networks. there are also instances where a compression element (signified by the gold rods) spans across the entire installation. at each end they connect to both nets A and B, spanning across the entire interior of the installation. these act primarily as devices for expanding the gross spatial characteristics of the net. they add a minimal amount of posttensioning.

if (length(local) < distance * 0.5) then { springRestLength(local) = springRestLength(local) * 1.5; springStrength(local) = springStrength(local) * 1.5; }

27.800001cm13_id3,19 16.800001cm18_id5,14 8.400001cm25_id7,12 81.200005cm1_id7,8:1,10 25.300001cm5_id1,15 71.5cm23_id7,6 25.4cm12_id3,16 21.6cm22_id7,3 169.8cm0_id6,4:2,16 56.100002cm1_id1,3 38.100002cm15_id5,5 54 embedded fabrication
2.1-28 2.1-29
frame0500 frame5800 frame7500
2.1.4 Spatial Articulation of Net
55 2.1-31 2.1-32 2.1-30

2.1-33

experiment with tension and compression active component. the membrane is anchored (via strings) at 4 corners with an internal compression element. when tension is activated in the component, the compression element finds it position and simultaneously opens up minimal holes on both membranes surfaces.

2.1-34 membrane component installed into net. membrane components were added to the net after it was completely installed. they did little to affect the overall tensioning. they acted primiarily as visual devices emphasizing the gap between net A and B.

2.1-35 computational membrane component. this component was simulated computationally, though it was not utilized for the fabrication of the installation. it was not clearly understood how to translate the computational geometry to a physicall material.

2.1-36

mambrane fabrication. the caluclations, sizing, and fabrication for the membrane components were all done manually.

2.1-37 array of membrane components. the compression element is not present in the membrane component for the installation. the connection of the minimal holes between components provided the same effect spatially.

56
side view top view perspective 2.1-34 2.1-33 2.1-35
2.1.4 Spatial Articulation of Net embedded fabrication
57 2.1-37 2.1-36

38

embedded fabrication

ITERATION.05

chain.count:

ring.count:

rest.length

x.parameter

20 12 5.0 (pow(i,2.6)*r*sin(a)*0.006)+60-0.8*i (pow(i,2.0))*(r*(cos(a))*0.01)

The most interesting result from the experiment is that the digital process is transformed from structural simulation to a design simulation with embedded structural and material constraints. In engineering software packages dedicated to cable net structures, the setup demands high specificity of material and positional details. In this environment where demands are many and mostly related to predetermined material and structural matters, the ability to connect variables with design intent is quite minimal. The ability to perform multiple iterations can be even more difficult.

ITERATION.01

chain.count:

ring.count:

rest.length

x.parameter

y.parameter

20 8 5.0 (pow(i,2)*r*sin(a)*0.006)+60-0.8*i (pow(i,2))*(r*(cos(a))*0.01)

ITERATION.02

chain.count:

ring.count:

rest.length

x.parameter

y.parameter

20 20 1.0 (pow(i,1.7)*r*sin(a)*0.006)+60-0.8*i (pow(i,1.7))*(r*(cos(a))*0.01)

FRONT TOP SIDE
58 2.1-
y.parameter 2.1.5
Evaluating Cable Net Installation
2.1.5 Evaluating Cable Net Installation
In the design oriented process, there are intentionally embedded opportunities for investing concepts of design issues independent of structure. One significant component of this process is the computational net topology. It has been put in service of two main conditions. First, a logic for fabrication has been applied based on a regular pattern of springs and a node identification system to easily sort through the springs. Second, the network is influenced by a more abstract set of conditions based on the notion of creating varying degrees of bounded space through the use of one continuous, connected surface: the cylindrical topology.

ITERATION.05

chain.count:

ring.count:

rest.length

x.parameter

20 12 5.0 (pow(i,2.6)*r*sin(a)*0.006)+60-0.8*i (pow(i,2.0))*(r*(cos(a))*0.01)

2.1-39

ITERATION.01

chain.count:

ring.count:

rest.length

x.parameter

y.parameter

20 8 5.0 (pow(i,2)*r*sin(a)*0.006)+60-0.8*i (pow(i,2))*(r*(cos(a))*0.01)

ITERATION.02

chain.count:

ring.count:

rest.length

x.parameter

y.parameter

20 20 1.0 (pow(i,1.7)*r*sin(a)*0.006)+60-0.8*i (pow(i,1.7))*(r*(cos(a))*0.01)

ITERATION.03

chain.count:

ring.count:

rest.length

x.parameter

y.parameter

30 20 5.0 (pow(i,1.1)*r*sin(a)*0.006)+60-0.8*i (pow(i,2))*(r*(cos(a))*0.01)

ITERATION.04

chain.count:

ring.count: rest.length x.parameter y.parameter

24 6 5.0 (pow(i,2.6)*r*sin(a)*0.006)+60-0.8*i (pow(i,2.0))*(r*(cos(a))*0.01)

2.1-38 and 2.1-39 examples of design variation from the same computational process that generated the Cylindrical Net Morphologies installation. these examples utilize only a minimal set of variables to produce very different formal outcomes. each design, though, has the same topological strategy, and can therefore be fabricate in the same manner and with the same ease as the Net installation. the design would be in the scale of the network. as the chain.count (num. of particles in the lateral direction) and ring.count (num. of particles in the longitudinal direction) increase, the number of elements to be fabricated will also increase.

ITERATION.05

chain.count:

ring.count:

rest.length

x.parameter

y.parameter

20 12 5.0 (pow(i,2.6)*r*sin(a)*0.006)+60-0.8*i (pow(i,2.0))*(r*(cos(a))*0.01)

ITERATION.06

chain.count:

ring.count:

rest.length x.parameter y.parameter

40 12 7.0 (pow(i,2)*r*sin(a)*0.006)+60-0.8*i (pow(i,1.6))*(r*(cos(a))*0.01)

FRONT TOP SIDE
y.parameter 59

Examining visually the installation, it is apparent in how the density of the mesh (frequency of lines and nodes within a certain sized area) plays a part in comprehending the shape of the net and its possible implications as a threshold. A regularized pattern, one which has a certain frequency of repetition, aids in reading the continuity of the surface and thus reading the form. With this installation, the pattern is more typically irregular as the two nets connect and disconnect, and the compression element push the patterns of the two nets out of sync. This is an interesting aspect in being able to produce and fabricate, in a heavily methodical way, such irregularity. But, there is also an interest in producing readable forms; ones

which can serve as thresholds or boundaries to clearly defined areas of space.

Figure 3.41 begins to show how the cylindrical net can form boundaries to shape areas other than typical centralized cylinder form. In the design, this is generated through the involution of the cylindrical form (see Figure 3.4). These types of spaces, generated from the cylindrical topology are compelling. Further experiments will focus on how to locate such conditions, and how these conditions can control or indicate certain types of movement through spaces defined by these cylindrical net morphologies

60 embedded fabrication 2.1-41 2.1-40 2.1.5
2.1.5 Evaluating Cable Net Installation (cont.)

2.1-40 regularity in pattern. the mesh is organized in a way that present a relatively regular pattern. the membranes accentuate the pattern. these 2 conditions, the pattern and the membranes, help to more clearly define the shape of the overall form.

2.1-41 bounded area. the involuted cylinder, from this perspective, begins to define a bounded area. the membranes serve to enhance the clarity of reading this bounded space.

2.1-42 movements indicated by different net arrangements. net densities can begin to elicit certain types of movements through the nets.

1 19 19 17 12 11 15 13 12 4 3 11 7 14 10 16 15 18 0 0 3 2 19 9 8 16 12 11 15 7 11 7 3 2 7 3 1 2 1 4 5 6 8 9 10 3 12 13 14 0 13 17 18 19 0 1 2 1 0 5 6 0 8 9 10 19 19 13 14 18 16 1817 15 17 1 2 16 4 5 6 12 11 7 4 3 2 1 0 19 9 18 17 5 6 8 8 9 10 16 15 13 14 7 16 1817 14 13 6 2 3 4 5 6 12 8 9 10 11 18 19 0 1 2 10 4 56 7 8 9 10 9 8 161514 17 18 7 11 14 10 0 15 13 5 5 11 3 19 9 17 10 19 2 16 9 14 12 16 6 1 8 13 12 3 4 7 4 15 18 1 2 0 17 18 8 6 7 12 11 15 7 16 3 13 19 1 0 2 3 4 5 6 8 9 10 11 12 13 14 17 18 19 0 1 2 4 56 7 8 9 10 161514 17 18 61
2.1-42

2.2 Topologically Defined Net Components

62
2.2-1

As the Cylindrical Net Morphologies installation worked with a pair of layered cylinders, this experiment focuses on how to construct and associate a series of interconnected cylinders. With the installation, the two nets were relatively autonomous. They connected at moments, but the moments were more about pattern than they were about following a particular reasoning and design / structural strategy for why they should connect or disconnect at particular moments.

When beginning to associate multiple nets, the question of hierarchy arises. There is a need to address it at the computational level: how to control and easily access a growing number of elements, arrays and variables. It is also vital to address hierarchy at the level of structure and material. A spring’s location within the net may determine its hierarchy (a standard spring within the field of a cylinder or a spring that represents an edge cable, for example). These are the focal issues for this experiment. The challenge of controlling density as a factor that describes the visual readability of a net and its form is also an underlying factor in driving the capabilities of a system that generates multiple inter-connected nets.

To accomplish these varied criteria, the intention is to continue to work with the topology of the spring networks, as opposed to discreet geometry. This is to allow for maintaining an extensibility in the types of geometry that can be derived from the spring networks. The meaning of the topologically defined component is that of a component that is mainly described through numbers (of particles and springs) and hierarchy (particle or spring at the edge of the network, shared between networks or within a network).

63
2.2-1 Computational model of cellular framework and interconnected cylindrical nets. following particular rules, the nets interconnect ot create a larger continuous structure.

With digital simulation of tension-active structures, there is often a limitation in the topology of the components. Prior to realizing the geometric form, the base topology is defined. This is most evident in physical form-finding methods and is, therefore, typically transferred into computational form-finding methods. The base topology has significant ramifications on the types and range of geometries that can be created when tension forces are applied. By looking for extensibility at the level of “base topology”, the types of geometries that can be solved for becomes increasingly vast. Ultimately, this means that the process of generating nets is not the governor of form. Rather, other external design criteria can be determinants to the validity of form.

2.2.1 Component Systems for Form-Found Structures

With understanding architecture through the assembly of components comes the recognition of hierarchies between these components. Two primary hierarchies are that of the framework (or the “grid” - the overall framework for the structure) and what could be called the infill (the system that occupies the cells established by the grid). In a typical architectural process, computationally, the framework would be the UV parameters of a surface, and the infill would be a series of geometric components, of which contain a similar or dis-similar topology.

Looking at the hierarchical structure for components in a physical form-finding process, we can identify how these hierarchies become regularized, and subsequently limiting to the range of geometric deformations that can be achieved. It may be of a particular design aesthetic to maintain a minimal amount of variation from one component to the next. But, ideally, this should be born of the design intentions, not of a limitation in the design process itself.

In Frei Otto’s studies for the Stuttgart Main Railway Station (see Figure 2.2-3), we see a 6-sided framework and then a component that consists of a network of 6-sided polygons. The topology for the component aids in flexibility to find forms that have an equilibrium tension state. Because of the limitation in stretch of physical materials, it is necessary to use this particular topology to have an opportunity to pursue some degree of variation in form between components, albeit a minimal amount.

2.2.2 Subdivision Algorithm for Cellular Framework

Pursuing the extensibility of the Cylindrical Net as a component, the creation of the framework is driven by a computational method that is extensible as well. The extensibility focuses primarily on producing a topologically varied cellular pattern. In this case, topologically varied means the cells can be described with a varied number of nodes.

In contrast to the Cutty Sark Pavilion (see Figure 2.2-6) where all of the cells of the framework were hexagonal, the method for creating frameworks for the Cylindrical Net component produces cells with varied numbers of sides.

The cellular network is generated through a subdivision algorithm that was created in RhinoScript for this experiment. The system utilizes a slicing method to subdivide larger volumes in a manner that distributes a range of volumes, considering scale, adjacencies, and orientation. It provides an opportunity to consider condition that the Net system cannot. In this case, number of elements, size of elements, and which elements are neighbors to others.

The idea of neighbors is what intimately connects the two methods. A volume that has been subdivided creates two volumes with a new set of shared edges. The Net components look to utilize these shared edges to expand the network creating larger continuous surfaces.

2.2.3 Single Cell Net Parameters

When a Net component occupies a cell, it mainly reads the corner point and a directional orientation. Computationally, this is the data that is processed out of a script in Rhino: arrays of corner points (see Figure 2.2-14a). The Net component is installed in Processing, where 3 hierarchies are established: anchor spring, edge spring, and net spring. The anchor springs connect to corner points (provided by the cellular framework), the edge springs connect the boundaries of the net back to the anchor springs, and, finally, the net springs establish the cylindrical geometry.

Density is an important variable at this scale of the system. A Net that simply traces the corner points is quite open and does not clearly describe or insinuate at the cylindrical, directional form (see Figure 2.2-15). In Processing, a variable has been set to multiply the number of particles at the boundaries

of the Net component, to introduce more springs and introduce more density. These new particles are captured by the edge springs and included in the construction of the Net component.

2.2.4 Multiplication and Association of Net Components

Beyond the rules for the Net component in relation to a single cell, there is another set of rules when the Net components are installed into a multicellular framework. The main factors that influence the net creation have to do with neighboringconditions at which one cell neighbors another. Two main types of neighboring are analyzed. First, the condition where a corner point from two cells share the exact same position. In the Net component, it means that the particles at that position are “stitched” together, and unfixed from that location. Second, if an edge from two cells is completely coincident, then the edge particles between two nets are “stitched” and unfixed. Generally, a shared condition in the framework means that the nets will connect with each other and expand the continuity in the spring network. The interest is in blurring the “component” nature of the system and allowing these rules for association to drive emergent characteristics for spatial orientation (direction) and definition of boundary (surface).

64
topological components

2.2-2

Computational model consists of 4 interconnected Net components (front view). the orange lines designate springs that act as edge cables. they occur at the open edges of each component. this is not a prescribed condition. it occurs when the association between all of the nets is determined.

65
2.2-2

CUTTY SARK TEMPORARY PAVILION

2.2-3 physical form-finding models, Frei Otto, Stuttgart Railway Station. the topology of the component is hexagonal providing for enhanced flexibility (compared to a quad topology) in finding an equilibrium tension in the form.

2.2-4 & 2.2-5 component array into larger framework. the hexagonal topology exist at the upper-level hierarchy as the framework for the individual column/roof components

2.2-6 component roof system for Cutty Sark Pavilion, by youmeheshe architects, 2007. the hexagonal framework is infilled with a membrane component. the hexagonal framework varies slightly between cells, while each component varies geometrically, though topologically similar.

Cutty Sark Pavilion

Whilst the Cutty Sark conservation and structural works are being carried out, the Pavilion will maintain the publics interest in the ship with an exhibition and the opportunity to view the on going works. The Pavilion design has been generated with the aid of a highly sophisticated cad package enabling the form to be produced using the most economic use of material and structure.

2.2-3 2.2-4 2.2-6 2.2-5

CUTTY SARK TEMPORARY PAVILION

Cutty Sark Pavilion

Client:

Cutty

Status: completed

Value: £0.5m

2.2.1 Component Systems for Form-Found Structures topological components

66

Studio 4 The Cooperage, 91 Brick Lane, London E1 6QL +44 20 7168 1484, mail@youmeheshe.com, www.youmeheshe.com © youmeheshe 2007
Client: Cutty Sark Trust Date: completed May 2007 Status: completed Value: £0.5m exploded
surface
interiour
Cutty Sark Pavilion digital form generation exteriour view
view
detail
view
Studio 4 The Cooperage, 91 Brick Lane, London E1 6QL +44 20 7168 1484, mail@youmeheshe.com, www.youmeheshe.com
Whilst the Cutty Sark conservation and structural works are being carried out, the Pavilion will maintain the publics interest in the ship with an exhibition and the opportunity to view the on going works. The Pavilion design has been generated with the aid of a highly sophisticated cad package enabling the form to be produced using the most economic use of material and structure. Sark
Trust
Date: completed May 2007
exploded view
2.2-7 simulation of form generated in Frei Otto experiments. using the same process that generated the form for the Cylindrical Net installation, a symmetrical cylinder is transformed to create a computational form-found geometry akin to the Stuttgart Railway roof/column form.
67 2.2-7

2.2-8 inputs for spatial subdivision algorithm. the algorithm works to utilize a minimal number of variables but produce high degrees of variation in the forms that are generated. inputs 1,2 & 3 allow for a classification of the volumes that are generated. input 4 determines the range of variation for the geometric transformation function, a rotate and slice function. input 5 determines the envelope which will be subdivided.

2.2-9

output from the spatial subdivision algorithm. the algorithm generates the color coded volume sets with the primary criteria of adjacency and size. as the system steps through the priorities (defined by input 3) volumes get more and more distributed. volumes get continually subdivided to meet the particular volume size requirement defined through input 2.

2.2-10

overall assembly of volumes. in this instance, the dark grey coded volumes are set as void space, therefore removed from the final model. the subdivision algorithm produces packed assemblies of volumetric spaces with differing degrees of articulation.

2.2-11

volumes as frameworks for Net component. the Net component does, primarily, two things with the framework. first, one volume means the insertion of one component. the number of subdivisions therefore has an indicator for how many components and material will be generated from the particular model. second, the neighboring of volumes is interpreted as a series of associations between neighboring nets. they do not simply affix to corner points of the volumes. shared point and edges define connections between nets and begin to generate large networks and more complex spatial arrangements. additionally, the net component only requires 2 (of the 6 or more) surfaces from each volume as an input. this allows for the variable of directionality. the top-bottom surfaces can be utilized creating a vertical oriented net, or the front-back surfaces can be used to generate a horizontally oriented net, etc.

68
2.2-9
2.2-8 transformation random seed rotation minimum rotation maximum rotation values offset multiplier values value set 18 5.0 35.0 34.0 28.0 22.0 26.0 32.0 8.0 8.0 23.0 11.0 25.0 0.38 0.02 0.31 0.54 0.47 1 2 3 inputs: 1 2 3 4 5 TYPE RATIO PRIORITY TOOLSET GEOMETRY output:
2.2.2 Subdivision Algorithm for Cellular Framework topological components
69 2.2-10 2.2-11

2.2-12

outline for the spatial subdivision algorithm. the color coding defines the input for how many classifications of volumes there should be, the amount for each classification, and the priority. these are percentages to divide the given volume with. the number values determine the offset values for the slicing mechanism that splits of the volumes. the random seed allows for these values to be reproduced if a desired form is generated.

the slicing mechanism is a recursive action that selects each face of a volume and uses it to subdivide the volume itself. the acts until all of the faces have been utilized.

it then begins to fill the new volumes with the color coding (starting with the first). - fitting the biggest amount into the biggest volumes. if volume and colored classification amounts do not match (a volume is too big given the amount indicated in the coding diagram), then the subdivision routine runs again to define a better sized volume. the nearest volume is selected and utilized as the “envelope” for subdivision.

2.2-13

map describing the distribution and amounts of color coded volumes. this map provides a clear layout for how the slicing mechanism has broken up the initial volume. for the net component, it provides information for number of volumes produced, sizes and their location vertically within the entire model.

9 1_step1,surface1_offset 27 33 21 12 17 8 10 21 11 35 0.32 0.68 0.2 0.55 0.10 9 1_step1,surface1_rotate 27 33 21 12 17 8 10 21 11 35 0.32 0.68 0.2 0.55 0.10 9 2_step1,surface2_offset 27 33 21 12 17 8 10 21 11 35 0.32 0.68 0.2 0.55 0.10 9 2_step1,surface2_rotate 27 33 21 12 17 8 10 21 11 35 0.32 0.68 0.2 0.55 0.10 key: random seed: 9 number of subdivisions_subdivision step,surface_transform rotation value set: 27 33 21 12 17 8 10 21 11 35 offset multiplier value set: 0.32 0.68 0.2 0.55 0.10 70
2.2-12
2.2.2 Subdivision Algorithm for Cellular Framework topological components
71 2.2-13 height of initial geometry envelope
ratios for classification types

2.2-14

2.2-14 two surfaces define framework for a single Net component. the algorithm samples 2 opposing surfaces from a single volume. the corner points are transferred into corner particles and become the anchors for the net component.

2.2-14a data transferred to Net component. from the script in Rhino, the locations and sequence of the corner points are tabulated. as a text file, this is transferred into processing and the Net component is installed.

2.2-15 installation of rudimentary Net component into framework. in this instance, there is a direct relationship between the number of corner points and the density of the mesh in the net. the density is quite minimal and this represents that standard hierarchy between framework and infill component.

2.2-15a map depicting the direct relationship between the framework and the elements of the Net component.

2.2-15

0,3 0,2 0,1 0,0 1,2 1,1 1,3 1,0 surface 0 surface 1 0,3 0,2 0,1 0,0 1,2 1,1 1,3 1,0 72
2.2.3 Single Cell Net Parameters topological components
0,3 0,2 0,1 0,0 1,2 1,1 1,3 1,0 surf pt x y z fix type pt count 0 0 23400 34000 800 true particle true 4 0 1 22400 34000 800 true particle true 0 2 22400 32000 800 true particle true 0 3 23400 32000 800 true particle true 1 0 22400 32000 0 0 true particle true 4 1 1 23400 32000 0 0 true particle true 1 2 23400 34000 0 0 true particle true 1 3 22400 34000 0 0 true particle true PARTICLE, unfixed PARTICLE, fixed CORNER POINT [surface,point] SPRING 0,3 0,2 0,1 0,0 4 0 1 2 3 3 2 1 0 1,2 1,1 1,3 1,0 0,0 0,3 0,2 0,1 1,2 1,1 1,3 x y z fix type pt count 23400 34000 800 true particle true 4 22400 34000 800 true particle true 22400 32000 800 true particle true 23400 32000 800 true particle true 22400 32000 0 0 true particle true 4 23400 32000 0 0 true particle true 23400 34000 0 0 true particle true 22400 34000 0 0 true particle true PARTICLE, unfixed PARTICLE, fixed CORNER POINT [surface,point] SPRING 0,3 0,2 0,1 1 2 3 1,2 1,1 1,3 0,0 73 2.2-14a 2.2-15a

2.2-16 density multiplier variable for the net component. in Processing, the density multiplier takes the corner point count and multiplies it to create a higher number of particles and thus springs. this creates a control for the visual density of the net, and it ability to more or less clearly define a boundary. in this instance, the new particles are dispersed evenly along each edge and fixed in place. these locations are calculated in the processing script, and assigned to the particles.

2.2-16a added hierarchy between corner points and net. in this example, there is a new array of particles along the edge of the framework. the information from these particles is passed into the Net component, where the particles at the boundary of the Net are parented to these new edge particles.

2.2-17 increasing the density multiplier variable. the scaling of the density is parametric in the script. this simple switch of the multiplier to a higher value will expand the array of particles and spring and produce a higher density mesh.

2.2-18 locating elements within the arrays of particles. to derive the locations for each particles (in terms of the equal disbursement of the particles along the edges), it needs to be known where an edge particle sits in relation to its next corner particle. with the mod function, we can derive this information, while also understanding how far away we are from the next corner particle. since the mod can return that remainder, that information can be used to locate the particle in context of the corner particles. this is a very lightweight method for dispersing the new edge particles. but, ultimately, this method was too hard to utilize for connecting edge particles between nets. since this single edge particle array captures the corner particles, the intermediate particles, and has an association with the net boundary particles, filtering through these to isolate certain sets of particles within the array was too difficult to do with the mod function as developed.

2.2.3 Single Cell Net Parameters topological components

corner points: 4

density multiplier (dMult): 6

corner points: 4

density multiplier (dMult): 20

2.2-17

0,3 0,2 0,1 0,0 1,2 1,1 1,3 1,0 74
16
2.2-

0,0

PARTICLE, unfixed PARTICLE, fixed CORNER PARTICLE, fixed CORNER POINT [surface,point]

i (of particle count) in relation to corner particle: cornerPoints[(i - (i mod dMult))/dMult]

i (of Particle count) when AT corner particle: cornerPoints[i/dMult] where i mod dMult = 0

i: incrementing value for the boundary particles cornerPoints: array of corner point from framework dMult: density multiplier variable in Processing mod: modulo

1,2 1,1 1,3 0,3 0,2 0,1 5 4 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 1 2 3 1 2 3 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 PARTICLE, unfixed PARTICLE, fixed CORNER PARTICLE, fixed CORNER POINT [surface,point] SPRING 0,0 2 7 12 11 10 8 13 9 7 12 11 10 8 13 9 1,2 1,1 1,3 1,0 0,3 0,2 0,1 0,0 0 22 23 1 21 2 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 0 0 1 2 3 0 1 2 3 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16
SPRING
1 2 7 6 12 11 10 8 13 9 7 6 12 11 10 8 13 9 75 2.2-16a 2.2-18 net component particle [][j] count edge particle count corner particle count
net particle edge particle corner particle

2.2-19 hierarchy of particles and springs. as stated previously, locating and controlling a single array of particles mathematically for separate tasks was too difficult. to alleviate this problem, a set of hierarchically different particles is created. starting with the lowest level is the net particle (part of the cylindrical net component), at the next level is the edge particle (defining a series of edge springs which connect the boundaries of the net component), and at the top level is the corner particle (associated with the corner point of the framework).

2.2-19a

expanded hierarchy seen in particle map. by instituting different levels of hierarchy, connection methods between springs and variables such as spring strength can be more easily controlled. as seen in Figure 2.2-19, the edge springs (orange) are stronger than the net springs (black).

2.2-20

expanded top level hierarchy: the meta particle / spring. instead of affixing directly to the corner points of the framework, a meta system is introduced to mediate between the framework and the Net component. this defines the highest level of the spring network: a series of springs that connect from the framework corners to the corner particles of the Net component.

2.2-20a particle map which includes meta particles and springs. the spring existing between the corner point of the framework and the corner particle allows for articulation of the overall net forms. it can be strengthened (and shortened) computationally so that the net shapes more tightly to the framework. this set of springs can also act as a device for posttensioning when translated to a series of anchoring cables in physical construction.

2.2-20b

layers of different arrays and associations. the meta particles absorb the location information defined by the corner points. the corner particles are then parented to the meta particles. the edge particles utilize the density multiplier to determine how many are generated between each corner particle. the boundary net particles are parented to both corner particles and edges particles.

2.2.3 Single Cell Net Parameters topological components

2.2-19

2.2-20

1,2 1,1 0,3 0,2 0,1 0,0 1,3 1,0 76

NET PARTICLE, unfixed

PARTICLE, fixed NET PARTICLE parented to EDGE PARTICLE, unfixed NET PARTICLE parented to CORNER PARTICLE, fixed

PARTICLE parented to CORNER PARTICLE, unfixed

0 22 23 1 21 2 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 1,0 1,1 1,2 1,3 0,0 0,1 0,2 0,3 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 0 4 1 3 2 4 3 2 0 1 0 1,0 1,1 1,0 1,1 5 4 0 7 3 1 6 2 1,1 1,1 6 0 7 1,2 1,1 0,3 0,2 0,1 0,0 1,3 1,0 1,1 1,0 NET PARTICLE, unfixed NET PARTICLE, fixed NET PARTICLE parented to EDGE PARTICLE, unfixed NET PARTICLE parented to CORNER PARTICLE, fixed NET PARTICLE parented to CORNER PARTICLE, unfixed META PARTICLE CORNER POINT [surface,point] NET SPRING EDGE SPRING META SPRING EDGE STITCH SPRING 0,0 0 22 23 1 21 2 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 1,0 1,1 1,2 1,3 0,0 0,1 0,2 0,3 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 0 4 1 3 2 4 3 2 0 1 0 1,0 1,1 1,0 1,1 5 4 0 7 3 1 6 2 1,1 1,1 6 0 7 1,2 1,1 0,3 0,2 0,1 0,0 1,3 1,0 1,1 1,0
META
CORNER
NET SPRING EDGE SPRING META SPRING EDGE STITCH SPRING 0,0 77 net particle edge particle corner particle meta particle corner point 2.2-19a 2.2-20a 2.2-20b
NET
NET
PARTICLE
POINT [surface,point]

2.2-21 framework of two neighboring cells. the larger frame from the previous examples has been split into 2 sub-frames. from that split arises two sets of shared edges and points. the information for these coincident geometries is logged into an Excel sheet (see Figure 2.221a). the conditions that are noted are points that sit in the same location and edges that start and end in the same locations.

2.2-21a coincident points when a pair of coincident points are located, the connection is tabulated in the Excel sheet and both particles fixed option is set to false coincident edges at a coincident edge the, start and end points are noted along with the information for the coincident points at each end of the edge. the direction of the edge is important to note as it can vary. in some cases, the edges may move in opposite directions (as shown in Figure 2.2-21). but, in other conditions, the edges may run in the same direction. there is no indicator within this Excel sheet as to how the particles and spring respond to this edge condition. the repercussions are handled in Processing as the edge condition relates to the edge particles - which are generated only in Processing (driven by the density multiplier variable)

2.2-22

Net component in multi-cell framework. the coincident edge association from the Excel sheet drives the edge particles to be connected with “stitch” springs (red dashed). with coincident points, the corner particles are “stitched”. this creates a continuously connected edge.

2.2-22a particle map for net in multi-cell framework. at the coincident points, the corner particles are set to unfixed, and stitched together. along the coincident edge, the edge particles are all stitched together.

2.2-23 expanding the continuous spring network. when the new “stitch” springs are set to be strong and short, the two edges of the two Net components are stitched tightly together and resemble a larger single continuous spring network.

1.3 0.0 1.2 0.1 0.2 0.3 1.0 1.1 3.1 2.2 3.0 2.0 2.1 3.2 3.3 2.3 cell 2,surface 0 cell 1,surface 2 cell 1,surface 3 cell 2,surface 1 78
2.2.4
2.2-21 2.2-23 2.2-22
Multiplication & Association of Net Components topological components
0 22 23 1 21 2 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 1,0 1,1 1,2 1,3 0,0 0,1 0,2 0,3 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 0 4 1 3 2 4 3 2 0 1 0 1,0 1,1 1,0 1,1 5 4 0 7 3 1 6 2 1,1 1,1 6 0 7 1,2 1,1 0,3 0,2 0,1 0,0 1,3 1,0 1,1 1,0 NET PARTICLE, unfixed NET PARTICLE, fixed NET PARTICLE parented to EDGE PARTICLE, unfixed NET PARTICLE parented to CORNER PARTICLE, fixed NET PARTICLE parented to CORNER PARTICLE, unfixed META PARTICLE CORNER POINT [surface,point] NET SPRING EDGE SPRING META SPRING EDGE STITCH SPRING 0,0 surf pt x y z fix type ct coincident associations by pt along edge 0 0 23400 32992.82 800 false particle 4 point 0 1 22400 32992.82 800 false particle point edge 0 2 22400 32000 800 true particle 0 3 23400 32000 800 true particle 1 0 22400 32000 0 true particle 4 1 1 23400 32000 0 true particle 1 2 23400 32792.82 0 false particle point 1 3 22400 32792.82 0 false particle point edge 2 0 23400 34000 800 true particle 4 2 1 22400 34000 800 true particle 2 2 22400 32992.82 800 false particle point 2 2 3 23400 32992.82 800 false particle point 1 edge 11 1 2 3 0 22400 32792.82 0 false particle 4 point 8 3 1 23400 32792.82 0 false particle point 7 edge 13 7 8 3 2 23400 34000 0 true particle 3 3 22400 34000 0 true particle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 4 1 3 2 5 0 4 4 0 1 3 7 3 1 6 2 2 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 12 11 14 10 8 13 9 19 18 0,0 0,1 0,2 0,3 21 17 15 20 22 23 16 18 19 23 16 20 22 17 21 0 1 2 4 3 0 1 2 4 3 0 1 2 4 3 0 1 2 4 3 11 12 9 13 15 10 14 4 5 2,3 2,2 2,1 2,0 2,1 2,0 2 6 8 3 1 0 7 0,1 0,2 79 2.2-21a 2.2-22a

2.2-24 combination of edge and stitched springs in 3-cell framework. the system exhibits conditions where the Net components are neatly stitched together along some edges while open on other edgesbeing captured by a series of edge springs.

2.2-24a particle map describes interconnections between nets of 3 cells. along the center seam of the framework, there exists coincident points but no coincident edges. the coincident edges only occur between the second and third cell.

looking at the particle map more generally, there is a growing complexity in representing the model in this method. this map is constructed manually. the set of rules driving this relationship are relatively simple, but as the number of components arises the only way to compile this data is through computation.

2.2-25 varying directionality of net components. the framework for the Net components is derived from a subdivided volumetric model. from each volume only 2 surfaces are selected. in the previous examples, the top and bottom surfaces have been selected from each volumetric cell. in this iteration, cell 3 is defined by two side surfaces. this significantly shifts the definition of the coincident edge condition and remaps the edge springs.

2.2-26 orientation of each cell. the yellow cell (cell 3 as shown in Figure 2.225) has been switched from utilizing the top and bottom surfaces of the volume to the side surfaces.

2.3 4.1 2.0 3.2 5.3 3.1 5.0 3.0 5.1 4.3 2.2 0.0 0.1 1.2 1.3 5.2 4.0 3.3 2.1 1.1 1.0 0.3 0.2 4.2 cell 1 cell 2 cell 3 cell 1 cell 2 cell 3 80
2.2.4
2.2-24 2.2-26 2.2-25
Multiplication & Association of Net Components topological components
5,1 5,2 5,0 5,3 5,0 4 3 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 18 19 23 16 20 22 17 21 11 12 9 13 15 10 14 4 5 2 6 8 3 1 0 7 3,3 3,0 3,2 3,1 3,0 0 1 2 4 3 0 2 2 4 3 0 1 2 4 3 0 1 2 4 3 6 5 8 7 13 12 15 11 9 14 10 20 19 22 18 16 21 23 0 17 6 6 5 8 7 13 12 15 11 9 14 10 8 7 9 10 20 19 22 18 16 21 23 17 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 1,0 1,1 1,0 1,1 1,2 1,3 0 22 23 1 21 2 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 1,0 1,1 1,2 1,3 0,0 0,1 0,2 0,3 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 0 4 1 3 2 4 3 2 0 1 0 1,0 1,1 1,0 1,1 5 4 0 7 3 1 6 2 1,1 1,1 6 0 7 1,2 1,1 0,3 0,2 0,1 0,0 1,3 1,0 1,1 1,0 NET PARTICLE, unfixed NET PARTICLE, fixed NET PARTICLE parented to EDGE PARTICLE, unfixed NET PARTICLE parented to CORNER PARTICLE, fixed NET PARTICLE parented to CORNER PARTICLE, unfixed META PARTICLE CORNER POINT [surface,point] NET SPRING EDGE SPRING META SPRING EDGE STITCH SPRING 0,0 81 2.2-24a

2.2-27

2.2-27

perspective views of Cylindrical Net component in cellular framework from Figure 2.2-25. the meta-springs (brown lines) have been further utilized and varied in their strength parameters for this model. this does not disturb the overall mapping and association between the Net components. rather, it helps to deform the gross morphology of the entire network of springs.

82
2.2.4 Multiplication & Association of Net Components topological components
83

Realizing Spatial Properties

Working with larger assemblies of nets, the possibilities for spatial complexity becomes apparent. In the design shown here, the entire network exhibits a 3-way branching behavior. This is not utilized as a direct control for circulation or boundary of space. But, if you start to consider other types of pathways that may influence the movement or gathering of people, then this type of material spatial organizing be an alternative mechanism for arrangement and experience of architectural space.

The branching phenomena in this example emerges through the “hub” of associated frames (see Figure 2.2-30). It is not directly coded in the script as a “branching” function. It merely emerges because of a certain arrangement and accumulation of coincident points and edges. This poses an interesting condition for how the framework relates to the final net form. The central “hub”

because each element has a coincident condition of some sort provides no information for position in the final form. It only drives association between the nets. Thus, in Figure 2.2-28, the central hub is floating with no physical connections to it.

Recognizing this relation in the process helps to qualify some of the geometric definition in the cellular framework mechanism of the system, and the subdivision algorithm that drives it. There are 3 main conditions that arise: frames that associate with the context and create fixed anchor points, frames which only define association between neighboring nets, and frames that are a hybrid of both - association and location.

This design begins to expose more the meta-spring aspect of the system. Here, it expands beyond that as a device for connecting to anchor points. It becomes a larger network of springs which aids in controlling the overall form of the net.

1 2 3 4 4 X 1 2 3 4 84 2.2.5 Realizing Spatial Properties topological components 2.2-28 2.2-29 2.2-30 2.2-31
2.2.5

2.2-28 assembly of nets in a particular context and scale. the net is arranged where density and clearly defined apertures are used to connect various directionalbased user-oriented experiences. this could have to do with environmental conditions such as view, movement, and exposure to light. a uniqueness of this type of material assembly is the porous nature from all perspectives as a cable net while from particular locations different apertures and silhouettes visually emerge.

2.2-29 outline of context in which net is installed.

2.2-30 net associations defined by cellular framework. the central hub defines the type of associations between the 4 nets. in this case, it defines a branching condition. since each aspect of each frame (point or edge) has a coincident condition, then this set of frames only defines association, not position.

2.2-31 overall network of springs is defined through 4 Net components. the 4 components are stitched together to generate a 3-way branching structure. the meta-springs (yellow) act to expand the volume of space at the branching node. with spring networks, typically, the further the springs are from the anchor points, the more compressed the cross-section becomes. the meta-springs make a more direct connection back to the anchors points adding force in expanding the cross-section at the central moment of the net.

2.2-32 front elevation of net, scale 1:500.

2.2-32 plan view of net, scale 1:500.

7.6 7.5 7.4 7.3 7.2 7.1 7.0 6.7 6.6 6.5 6.4 6.3 6.2 6.1 6.0 4.3 4.2 2.3 2.2 7.7
85
2.2-33
2.2-32

2.3_Threshold Conditions

86 1.2-1
computational networks

Perceived density is different than actual density. In order to measure actual net densities from specific view points, it is not sufficient to access the logic map. Physical or even perceived proximity of nodes cannot be extracted from the topological associations.

Denser locations of nodes, formed either through multiple, overlapping nets, varied net density (weft & warp) or perspective distorsion are material thresholds that alter the perception of space. Tracking, analyzing and locating these proximities embeds visual perception as a criteria into the process of computational net formations.

2.3-1

Net Density Analysis analysis and display of iradius filter determing number of “neighbors” within each particular region.

87

Physical (cable-)nets vary in sizes and meshdensities. The larger the meshes of a net are, the less knots are defining its shape. The geometry formed by the net under the influence of structural forces is what the architect wants to investigate and utilize. “Utilization” in this context extends beyond the performance as a shelter against certain external pressures such as wind, light, rain.

As the form is found naturally and with the space defined through it, the focus can shift from a structural analysis towards an investigation into how this architecture is or might be able to alter the way a user / visitor / inhabitant perceives the space defined by it.

This intimate connection between well-informed form (fabrication process, flow of forces) and its influence on local environment is very intriguing. Environment can be a certain climatic condition (temperture-zones created, exposure to wind, openings for rain) but can also be seen as a spatial condition. Of course the theory of what space is has be going on for centuries and it would be out of proportion of this thesis to give an overview of even some of these in a meaningful way.

Instead of discussing the notion of space in general, we want to focus on nets as “spacemaking devices” and how, through the parameters set up and described in the previous chapters, methods for informing (existing) spaces through the insertion of nets can be formulated, accessed and utilized.

Ultimately it is about understanding architecture as a material system, capable of altering a person’s perception of space while synchronizing structure, forces and form.

2.3.1 Comparing Actual and Perceived Density

Computational and physical nets have similar properties, if analyzed visually. Their geometry is vector-based; there is no inherent surface geometry (even though nets describe the shapes of mathematical minimal surfaces). Vectors intersect and connect at nodes to form a larger networka mesh. In computational terms the description ends here. There is no meta-system defined for a mesh-geometry in today’s 3D software 1 But Frei Otto and his Team describe “meshes” as a subset of larger “nets” in his Institute’s book IL ??- NETS AND NATURE”.2 This description would equal what is computationally described as a “mesh-face”.

The important common criteria of both - computational and physical nets (we will refer to nets as opposed to meshes from now on, to describe the network of springs in the computer ) is that they take the shape of “minimal surfaces” (zero degree mean curvature), but as they are meshes as opposed to surfaces they do have a high “visual

porosity” - depending on their scale. This “Visual porosity” can be measured through a Net’s density.

As “net density” we understand the density at which a net appears on the screen (projected onto a 2D plane). This density is highly dependant on a node’s distance to the next. A computationally simulated membrane for example has a very high “net density” and a long chain has a very low “net density” value. Of course there is no example of when a node-to-node distance is actually small enough in order to be categorized as “dense” and this will have to be evaluated from case to case and maybe some field studies. Our interest was the effect that node-proximities would potentially be able to trigger and how we would be able to access this information through the methods defined previously. One obvious effect, that can be observed without any detailed knowledge of nets from a structural point of view is that, the denser a net is, the more visible it is to the spectator and the more likely it is to affect its environment . A membrane is more sufficient for blocking sunlight, than a rope.

As the nets in the previous chapter are oriented into multiple directions, it is more difficult to categorize them and their potential to influence their environment.

In order to be able to show a nets potential to act as a space making device, a method for describing their density was developed in processing. But not like in the Chapter 2.1, Node-densities can not be accessed through the logic map. This results from the fact that a spectator is able to tell, which part of a net appears denser than others, but this is not necessarily based upon a higher density / connectivity defined in the logic map. Sometimes it is just the front and back of a net overlapping, that causes it to “give the impression” of being dense. This erases all “logical” neighbourhood information and in order to be able to simulate this perceived density a new ordering system has to be constructed.

A net’s “perceived density” can be based on a meshes actual density (high number of particles and springs), but must not (multi-layered effects of nets) and the computational analysis tool for identifying these areas will have to be able to recognize both conditions..

2.3.2 Computational Threshold Analysis

In order to simulate the way we perceive a 3-dimensional net from a certain point of view in XYZ-coordinate space we need to project the location of all its particles to a plane (similar to what a 3D program does - it produces 2D images of 3D objects). This process “erases” all established node-to-node relationships of the logic map. The flattened image of the net needs a new ordering

system, not based on topological relationship, but physical proximity.

In a lightweight analysis tool, written in processing, each particle of a net simulation looks for its nearest neighbours. “Nearest neighbours” is a critical term, because it indicates that there are neighbours that are not “near”. This definition of “relevant proximity” is necessary because otherwise the tool would consider all particles except itself as neighbours, making the analysis redundant (each particle would have the same number of neighbouring particles). “Nearest” in our case is parametrically described through a circle, circumscribing each particle at a fixed radius (radius = 50cm, but this can easily be changed). If there are any particles within this range on the plane of the projected net particle , the particle is highlighted with a circle, that grows in size as the number of particles found increases. Additionally it changes its colorvalue from (RGB 0/0/0 - White) to (RGB 255/0/0 - Red) accordingly.

88 threshold conditions
1 see Pottman, H, Architectural Geometry, Chapter 11. 2 Otto, F, IL-8 Nets in Nature and Technics, ILEK Institute. 2.3.1 Comparing actual and perceived density

2.3-2

3D SITUATION

A 3-dimensional net is perceived as a 2 dimensional image. The net appears denser than it is. This effect, resulting from the projection can be simulated in processing.

2.3-3

2D IMAGE

The image of the net as the spectator sees it.

e p P P h h p m c 89 1.2-2 1.2-3

2.3-4 a-c

vdensity analysis during dynamic relaxation process because processing is a programming language initially designed for 2D-graphics, it was possible to implement the projection of the nets onto a plane efficiently. The red areas display regions of higher density with regards to the camera perspective (the camera uses a parallel projection, which results in a undistorted view). As the springs negotiate the nets final form, the areas of density shift and the net’s densities increase towards the structure’s center and the emerging minimal holes. At each frame of the animation each particle ‘s distance to its closest 3 particles (neighbours) is measured and recorded. This value feeds into the coloration and size of the circles and allow the computer to recognize zones of high density.

90 threshold conditions 2.3.2 Computational Threshold Analysis
// OUTPUT circle drawn on top of particles projected XYcoordinate.
2.3-4 a b c

PROCESS

PROCESSING

//IMPORT (importXLS CLASS)

import a net from Rhino through Ecel and build network of springs.

# of neighbours (3) closest 3 particles

// EVALUATE determine the 3 closest neighbours within a given radius (iradius = 50 cm). Determine the amount of particles within that range (neighbours).

current

2.3-5 input geometry even though the process happens in realtime and during dynamic relaxation, the analysis of net densities of a relaxed net are described here, as their result is related to the final shape of the net.

2.3-6 analysis / identifiying neighbours each particle p is projected onto a 2-dimensional plane and the looks for neighbours within a previously defined radis (iradius = 50cm).

a) single particle

b) situation close-up

c) entire net

2.3-7 evaluation / visualizing data depending on the number of “neighbours” within iradiuis, a “local density” is measured. A circle is drawn around each particle in the next step. This time not with a constant radius, but with a radius dependant on the amout of neighbours determined previously. The more particles there are within the boundaries of iradius, the bigger and more red the resulting circle will be.

// INPUT

# of neighbours (3) closest 3 particles

//VISUALIZE (NBC2 CLASS)

draw a circle, base its RED value on the # of neighbours &assign a radius that equals the distance to the 3rd closest particle.

0 4 1 3 2 5 0 4 0 1 3 7 3 1 6 2 2 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 12 11 14 10 8 13 9 19 18 0,0 0,1 0,2 0,3 21 17 15 20 22 23 16 18 19 23 16 20 22 17 21 0 1 2 4 3 0 1 2 4 3 0 1 2 4 3 0 1 2 4 3 11 12 9 13 15 10 14 4 5 2,3 2,2 2,1 2,0 2,1 2,0 2 6 8 3 1 0 7 0,1 0,2 p iradius p iradius p iradius
INPUTS particle iradius (=50 cm)
//
// OUTPUT
91
2.3-6 a 2.3-7 2.3-6 b 2.3-6 c 2.3-8 b 2.3-5 2.3-7 1.2-10 // ANALYSIS
// OUTPUT particle
in
=0
>50 >30 >15 particle outside of iradius particle inside of iradius iradius NBC2 CLASS
NBC2 CLASS draw
particle
neighbours
setup

<- if this line is commented out, the analysis is not displayed (for fixed particles)

<- if this line is commented out, the analysis is not displayed (dor unfixed particles)

simulation and analysis

2.3-8 A particlereal-time

Looking “behind the scenes” of the density analysis tool. This code explains the extension to Simon Greenswold’s library in order to enable particles to “see”, “count” and “measure the distance to” their closest neighbouring particles.

See the chapter “conlusion” fore a detailed map of the workflow. comments next to each step explain each step of the script.

2.3-10 analyzed net the net is analyzed and the results are visualized immediatly.

4

the resulting circle

92
1
2 3 3
2.3-8 2.3-10 threshold conditions 2.3.2 Computational Threshold Analysis

2.3-9 inside a particle (class) the nbc2 (short for neighbourClass version 2) is the core of the density analysis.

Within this class, which is packaged into each particle, neighbours are determined, distances are measured and visual analysis tools (circles of different colors and sizes) are applied.

See the chapter “conlusion” fore a detailed map of the workflow. comments next to each step explain each step of the script.

93 1 2 3
2.3-9

2.3-11 net installation as this analysis tool works across all scales and from all angles, it is possible to perform the analysis on other, context specfic nets, too. in this case a large nte consisting of 4 net components is observed from 3 angles. This drawing shows the side elevation view.

2.3-12 threshold analysis red areas are zones of high mesh density. In these regions, the threshold defined by the net is higher than at remote locations (anchorpoints for example)

a) performed from the top from this anle, the structure diplays some openings, that would enable light to enter.

b) performed from the side net appears completely closed from this anlgle.

c) performed from the front clearly readable minimal hole condition in the net .

4.3 4.2 4.1 4.0 2.2 0.3 0.2 ANCHOR META-CABLE EDGE CABLE NET CABLE 6.7 6.6 6.4 6.3 6.2 4.3 4.2 4.1 2.3 2.1 0.3 FRONT ELEVATION 1:500 94 threshold conditions 2.3.3 Extended Vector-based Analysis 11 14 10 0 15 13 5 5 11 3 19 9 17 10 19 2 16 9 14 12 16 6 1 8 13 12 3 4 7 4 15 18 1 2 0 17 18 8 6 7 1 19 19 17 12 11 15 13 12 4 3 11 7 14 10 16 15 18 0 0 3 2 19 9 8 16 12 11 15 7 11 15 7 3 2 7 3 1 2 1 4 5 6 16 8 9 10 3 12 13 14 0 13 17 18 19 0 1 2 1 0 5 6 0 8 9 10 19 19 13 14 18 16 1817 15 17 1 2 16 4 5 6 12 11 14 7 4 3 2 1 0 19 9 18 17 5 6 8 8 9 10 16 15 13 14 7 16 1817 14 13 6 2 3 4 5 6 12 8 9 10 11 12 13 14 11 17 18 19 0 1 2 10 456 7 8 9 10 9 8 161514 17 18 7
a b 2.3-
2.3-11
12

2.3.3 Extended Vector-Based Analysis

The ability to simulate the location of nodes through particle systems in processing computationally provides certain capabilities to alter a nets apearance / performance in certain regions, based on external pressures. The Vector-based threshold analysis promises to be an extensible tool for multiple purposes. As the net is projected onto a plane and re-evaluated based on the criteria of node-proximity in real-time during dynamic relaxation we are now able to make certain predictions about how the net will perform in ceratin regions. If, for exaple, a first “point of view” is defined at eyelevel, 10m away from the net, the net density from ground level (+- 0) to average roomheight (app. + 240cm) can be analized and regions of higher density will be less likely to be penetrated by a user’s movement, because it will appear to ba a wall-like condition of the net. As the individual moves towards the, his point-of-view changes and so does the analysis of the perceived net density. This simple program would,through the extended simulation of “decision making” be able to serve as a tool for defining “pathways” through the structure. Another example would work in the same manner, but the POV (point of view) could be considered as the sun’s path. As the sun changes its position throughout the day, the net appears denser or less dense.

Through simple alteration of the net configuration (mesh density defined in the logic map through the amount of particles, adding multiple nets in

the same location, varying spring rest Lengths, location of fixed particle position, adding dense subnets, similar to membranes....) it is possible to enhance the performance of a net with regards to the amount of threshold it defines which in the next step has multiple repercussions on how sunlight pentetrates it or a person recognizes its shape.

By setting up multiple criteria (for example ability to move through and “shading”- high density of net from the sun’s current POV) and defining the parameters which can be altered, a perfect framework for a net-evolution based on a genetic algorithm has been set up.

2.3-13

2.3-13

structural analysis based on the deviation of a springs actual length to its restLength, the ditribution of forces can be visualized as well. Thiss happens at the same time as the density analysis.

2.3-14 paths

depending on a nets ground condition, certain patterns of movement can be allowed. Through the option of fixing and unfixing particles this movement can be altered, accelerated, slowed down.

This intervention, though, occurs only on the ground plane. In 2D.

The net density is a tool that allows a 2D-analysis of a 3-dimensional system of net components. Because of the object-based nature of the scripts it is possible to now examine and expose the parameters contributing to specific net conditions and re-parametrize them. These interventions could be undertaken to further define a visual threshold from different angles, in order to prevent rain from entering from the top, wind from passing through from a side and still maintain enough porosity in the structure to allow movement or emphasize paths and views.

95
c

3 APPLICATION & OUTLOOK

96
Contextual Inputs
In-Situ: Turbine Hall of Tate Modern
Comparison to Marsyas Installation
Conclusion
Elemental Processes
Architectural Emergence
Embedded Feedback
Outlook
Translations to Material and Fabrication
3.1
3.1.1
3.1.2
3.2
3.2.1
3.2.2
3.2.3
3.3
3.3.1
97

3.1 Contextual Inputs

98
1
3.1-

3.1-2

The Turbine Hall at the Tate Modern was chosen as a specific context to insert a tensioned net structure. This allows for a comparison to the tensile structure design by Anish Kapoor and ARUP, Marsyas, installed into the Tate Modern in 2002.

While the Marsyas installation is a membrane structure and the Cylindrical Net Morphologies are cable-nets, there are still possible comparisons from a design process point of view, and through analyzing manufacturing methodologies.

The artist of Marsyas portrays the installation as one of such great scale that it cannot be understood or documented from one particular view. Kapoor contends that the plan cannot be visually understood through any experience of viewing or walking around the structure.

With the Cylindrical Net Morphologies, there is this same characteristic of not being able to ascertain the true shape of the form. But, the interesting condition is because of its porosity as a net, you can view all elements that make up the structure from each perspective, but you still cannot determine exactly the movement of the surfaces and the overall assembly.

3.1-1

Cylindrical Net Morphologies installation design for context of Tate Modern Turbine Hall.

3.1-2

tensioned membrane installation by Anish Kapoor and ARUP, titled Marsyas, in the Tate Modern Turbine Hall, 2002.

99
100 contextual inputs 3.1.1 In-Situ:
at Tate Modern 3.1-3 3.1-4
Turbine Hall

From a design standpoint, the installation proposal looks to vary the description of view, boundary and aperture through the inherent capabilities of the cable-net structure. Porosity can be defined through ranges of densities in the net pattern. Larger densities degrade the appearance of a continuous net, invoking the view through it to become more primary. Where the network becomes highly dense, the surface of the net itself becomes more prominent. There is also the function of the holes that emerge in various forms within the entire network of cylindrical net components. They are directional (in that they contain a certain depth to them) so that they can be read only from certain positions. An effort was exerted to try to position these holes so that they may offer connections for view, movement, and

light. This analysis is not fully explored, though, in this design model.

To position the certain effects, the arrangement of cells, and the controlling of the meta-springs it utilized. The meta-springs are varied in degrees of connection and their strength, so that they may reposition larger areas of the net (see Figure 3.3-7). The resulting edge springs and Cylindrical Net components are a consequence of the associations between cellular frameworks and the stronger meta-springs.

The meta-springs also aid in articulating the form where a minimal number of anchor points are possible.

3.1-3 Cylindrical Net Morphologies design proposal for Tate Modern Turbine Hall. north elevation, scale 1:5000.

3.1-4 section looking east, scale 1:5000.

3.1-5 floor plan scale 1:5000.

3.1-6 cellular framework for installation built of cells with topologies ranging from 4-sided to 8-sided.

3.1-7 meta-springs and edge springs extracted from dynamically-relaxed model.

101
3.1-6 3.1-7 3.1-5
102 contextual inputs 3.1.1
8
In-Situ: Turbine Hall at Tate Modern 3.1-

This arrangement of springs is generated from 8 Cylindrical Net components. The directionality and degrees of association are highly varied. The image at right shows the type of apertures (holes) that emerge from various direct inputs and indirect hierarchical relationships. The orientation of the framework (up-down or left-right, for instance) will establish a fairly clear direction for the Cylindrical Net component. The directionality of one of the branched apertures (see Figure 3.1-9) shows how the feature of component directionality can be more intuitively controlled. Here, an aperture is generated to create a view connection to one of the protruding boxes on the upper level.

Between components, emergent properties are revealed as associations generate secondary

cylinders (between 2 stitched Net components), and holes (multiple cylinders attached at corner, but not along all edges).

These can be understood as emergent properties where they are not discreetly scripted into the assembly of the nets. Also, their properties arise through the interlinking of points and edges: the most basic elements of the process. There are not separate components, or separately programmed functions to deal with different scenarios of association. The overall effects are driven by the analysis of points and edges and their degrees of coincidence. More complex effects arise as the number of elements increase and the types of associations expand. For instance, when more than two points and/or edges are coincident a branching type

3.1-10

3.1-9

3.1-8 view from bridge looking towards entry.

3.1-9 view from bridge towards protruding box on upper level.

3.1-10 directionality for framework, roughly indicating the directional orientation of the Net component.

arrangement can occur. As shown in Figure 3.1-8, apertures can emerge through the definition of a surface (within a single cylindrical component) and also through a series of connected edge springs (the open boundaries of the multiple neighboring components).

103
104 contextual inputs 3.1.2
3.1-8 3.1-16 3.1-15
Comparison with Marsysas Installation

The main topic for discussion when comparing the two designs and their respective methods revolves around the functionality of the design process to produce a certain level of valid and valuable results.

For Arup, they focused on developing a quick design process that could simulate tension-active structures. We they developed was a similar spring-based computational process.1 But, to consider fabrication they only saw their model as static geometry and exported that information to Tensys, to regenerate as a tensile structure and extract information for membrane material patterns. In general terms, Tensys created cutting patterns by taking strips from their models and “shrinking” it to respect material elasticity and

tension force. This same strategy was utilized for the Installation at the AA, though for a cablenet structure. In simulating similar details to the Marsyas, a different approach was taken from that of Arup’s design process. Where the ring hovers above bridge to add a pulling force, our system utilizes meta-springs to capture internal portions of the net and tie them back to the anchor points. This allows for a higher level of articulation and essentially creates the impression of an anchor points where there is none.

The method for utilizing downward force could be simulated with the particle system driving the Cylindrical Net components. By enabling and controlling the variables of particle mass and environment gravity, a pulling force, through the

particles, could be simulated. Arup used sand in the large ring to balance the structure and provide proper force. The mass values for particles could be connected to such a method for physical construction.

When viewing the design approach and intentions, there is no telling whether the process or the idea produced the simple 3 pronged branch structure for the Marsyas installation. But, with the Cylindrical Net components, a higher level of complexity can be achieved and with embedded indicators for structure and construction through the meta-springs, the edges springs, the analysis for force, and the logic for fabrication.

1 Engineering Marsys at Tate Modern, The ARUP Journal, 01/20/2003.

3.1-11 weighted compression rings adding downward force for the tensioning of the overall membrane structure (left). direct connection of another compression ring to the structure of the Tate (right).

3.1-12 use of meta-springs to aid in structuring and articulation of the overall cable-net form.

3.1-13 activating of mass and gravity would allow for simulation of downward force, akin to the horizontal ring in the Marsyas installation.

3.1-14 to simulate a compression ring, the spring’s capability to exert compression force could be utilized.

3.1-15 detail elevation of Marsyas.

3.1-16 detail elevation of Cylindrical Net Morphologies design.

0 1 2 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 4 3 2 0 1 1,0 1,1 1,2 1,3 5 4 0 7 3 1 6 2 12 11 14 10 8 13 9 19 18 21 17 15 20 22 23 16 0 4 1 3 2 4 3 2 0 1 0 1,0 1,1 1,0 1,1 5 4 0 7 3 1 6 2 1,1 1,1 6 0 7 1,2 1,1 1,3 1,0 1,1 1,0 v FT v FT TENSION COMPRESSION false true fixed mass position pos.X float float boolean float float pos.Y pos.Z gravity drag springs strength restLength float float damping force library classes parameters parameter options parameter type restLength particle particle system A B B F = -k x = -45,42 N F = -k x = 41,57 N A t v FT v FT TENSION COMPRESSION v(t) = v cos(ωt + Φ) * * max t 0 0 restLength horizontal velocity x(t) = x sin(ωt + Φ) max horizontal position A B B F = -k x = -45,42 N F = -k x = 41,57 N t t 0 0 A t v FT v FT TENSION COMPRESSION v(t) = v cos(ωt + Φ) * * max t 0 0 false true pos.X float float boolean float float pos.Y pos.Z strength restLength float float damping parameter options parameter type restLength horizontal velocity x(t) = x sin(ωt + Φ) max horizontal position A B B F = -k x = -45,42 N F = -k x = 41,57 N t t 0 0 A 105
3.1-11 3.1-12 3.1-13 3.1-14

3.2 Conclusion

106
3.2-1

First looking at the Cylindrical Net Installation for the AA, the experiment intended to take a physical phenoma (form-found cable net), translate it to a computational simulation, and convert that back to a digitally-informed but manually-constructed object. This scope would typically produce what would be called a “material system”: a set of associated materials that are constrainted by parameters for material and manufacturing, where shape is formed under the pressure of structural forces.

What was of particular interest with the AA Installation was the nature in which the cable net described different boundaries of space within its relatively small footprint. Some areas were more clearly, visually apparent (see Figure 2.1-41), while other were only vaguely described because of the overlapping of open nature of the cable net’s mesh. Expanding the previously stated definition of “material system”, the last stages of research focused on considering the net’s affect on space as a built-in criteria within the computational process.

3.2-1

various Net components isolated from the overall spring network generated for the design of the Tate Modern installation (see Chapter 3.1.1)

107

SPATIAL SUBDIVISION

define number of cells select envelope-volume 001 subdivide envelope-volume 001 based on number of cells save

CREATE

This map explains the individual steps, that make up the entire process of the computational formfinding process. The extraction of data for fabrication is for purposes of readability not repeated, as it is explained in detail in chapter2.1 “embedded fabrication”.

Rhino generates the geometry (points) that serves as the framework for the dynamic relaxation. These points are created through the extraction from surface corner points, that are part of a larger volume-geometry. These Poly-surface geometries are generated through a “Spatial Subdivision” algorithm. The points provided, can be fixed in order to represent beams and other anchor point conditions. This data is written directly into Excel via a VBscript-function.

Excel serves as a data converter. But not only is the data gathered and restructured in Excel. Through comparison of coordinates, coincident points are located, tagged and additional information is added, that gets transferred into Processing.

Processing logic map is built based on the information provided by Excel. The net components necessary to connect between the point sets provided by the “spacial subdivision algorithm” in Rhino are created. Into each net, the edge cables are inserted and serve because of their higher spring strengths as a meta - structure for the nets. In a last step multiple nets are connected together and to the anchor points by very strong springs. Through the repetition and simple rules of connectivity a large network of springs with different hierarchies is constructed.

This network can be analyzed with lightweight tools directly built into the particle and spring classes. The neighbor class identifies neighboring particles and visualizes high net densities, that potentially turn the net into a space-making device. Inside of each spring is a colorcoding algorithm that is used and can be accessed at any time to visualize the distribution of tensile and compression forces within the entire architecture of cylindrical net components. conclusion

108 .rvb .xls
geometry
CORNERPOINTS
*.3dm import export volume A volume B volume C (...) volume
volume B volume C (...) volume A volume B volume C (...) point01 point02 point03 point04 (...) data
(surface01) point01 point02 point03 point04 (...) point01 point02 (...) point01 point02 (...) (surface02) point01 point02 point03 (...) multiplier (surface01) point01 point02 point03 (...) multiplier (surface02) .rvb *.3dm *.xls 010 RHINO EXCEL save *.xls isolate surface01 create cornerpoints isolate surface02 create cornerpoints script
A
(written directly into Excel)
flow
Elemental
3.2.1
Processes

surface 01

.pde

point01

point02

point03

(...) multiplier

surface 02

point01

point02

point03

(...) multiplier

xlsImport (*.xls) class { } net class

{ }

import excel data by row

create corner particles create edge particles

create net particles create net springs

edgeCable class { }

create edge springs based on multiplier value

edgeStitch class { }

create stitch springs

Particle class

setup Particle Object

location (X,Y,Z)

fix (true / false) mass (int)

draw Particle Object

neighbours class { }

setup neighbours

project particle to Cplane count particles within iradius (nbs) measure distance to 3 closest particles

draw neighbours Object

set fill to R-value based on neighbours within iradius (nbs) draw circle with radius based on 3rd closest particle

colorSpring class { }

setup Spring Object

restLength (double) strength (double) damping (double)

draw Spring Object

measure spring‘s current length ( d ) set strokeColor to value based on current length ( d )

109
(p);
*.pde
.xls
PROCESSING
4.4 4.1 3.0 4.3 4.5 3.1 3.3 4.2 1.0 1.3 1.1 1.2 3.2 0.2 5.4 5.3 5.1 5.2 5.0 5.5 0.0 0.3 0.1 2.0 2.1 2.3 2.2 4.0 110 conclusion 3.2.2 Architectural Emergence 3.2-2 3.2-3 3.2-4

3.2-5 3.2-6

The previous graph speaks of the elemental steps which develop the computational spring networks. The functions are built of simple scritping mechanisms (for-loops and if-statements) and organized into classes and functions. The simplicity of each scripted element allows it to be extensible and applicable to a various range of inputs and produce a vast array of geometries. This connection from the simple yet extensible processes to the ouput is what begins to generate emergent conditions in the architecture that is being produced.

The example that most descsribes this is the occurence of a branched condition. With the computational process being built of elemental methods it is not explicitly encoded for a branched condition to occur. But, as the script works fundamentally with points and edges - certain associations end up producing various branched conditions (a 2-way branch (at left) and a 3-way branch (above)).

These occurences are architectural, as they shape a volume and estabish a direction of movement. Driven by the computational spring, there are indications for material type and calculations for stresses. The assembly sequence is still mapped into each Cylindrical Net component since they maintain there internal IDs and network topologies.

A general defintion of an emergent condition is a situation that is borne of local interactions

which produce some sort of discernable macrobehavior.1 The compuational process for the Net works primarily at the lowest, most local level of the system: the point (the particle), the edge, and the spring. The spring can only connect two particles. It, therefore, can only negotiate at the local level. The macro-behavior that arises is that of a larger continous network generating various threshold conditions.

Though there are macro-behaviors that can be understood from the Cylindrical Morphologies, there is an interesting characteristic to where the entire assembly cannot always be visually understood. Because of conditions of overlap and varying densities in the mesh, the description of the overall structure is not always readily attainable. It is possible, though, that this adds experience and user-defined perspective as a part of the emergent behavior of the overall system. Through various movements of the user, a new (or different) understanding of the macro-behavior becomes apparent.

3.2-2 diagram of framework and frame associations. the arrangement generates a spring network that exhibits a branching volumetric structure.

3.2-3 spring network exhibiting a branching structure.

3.2-4 exploded diagram of individual Cylindrical Net components.

3.2-5 exploded diagram of individual components from proposal for Tate Modern installation (see Chapter 3.1.1).

3.2-6 floor plan with colored Cylindrical Net components.

111
1 Johnson, Steven, Emergence, Penguin Books, London, 2001.

Simulation is typically seen as an engineer’s tool for analysing the structural phenomena in particular material arrangements. This removes it from the realm of design investigation. When material and structural properties can be embedded into simple components of an accessible digital process, then iterative design experimentation can be engaged. An example of this has been discovered in the use of springs within the Processing programming environment. Once structural behaviour and manufacturing logics have been invested into the process, the system is able to pursue the relationship between material arrangement and its effects on space, organisation and environment. Behaviour can be expanded beyond technical and engineering realms encompassing particularities of architectural space.

1 3 4 2 7 0 2 1 4 0 5 3 6 ( ) ) ( ) ( ) ( ) ( ) ( ( ) (6) (5) (4) (3) (2) (1) (0) (1) (1) (0) ( ) (0) ( ) (0) ( ) (0) ( ) (0) (1) (0) (0) ( ) (0)(7) (7) 5 0 4 0 1 7 3 1 6 2 (7) 6) 5) (4) (3) (2) (1) (0) (0) (0) (0) (0) (0) (0) (0) (0) (7) 6) 5) (4) (3) (2) (1) (0) (1) (1) (1) (1) (1) (1) (1) 1) (7) (6) 5) (4) (3) (2) (1) (0) (2) (2) (2) (2) (2) (2) (2) 2) (7) (6) (5) (4) (3) (2) (1) (0) (3) (3) (3) (3) (3) (3) (3) 3) (7) (6) (5) (4) (3) (2) (1) (0) (4) (4) (4) (4) (4) (4) (4) (4) 5 0 4 4 0 1 3 7 3 1 6 2 2 open-edge connectivity typical connectivity closed-edge connectivity (7) (0) (0) (7) (7) (2) (1) (1) (3) (2) (3) (0) (6 5 1 7 4 0 (2 3 (6 5) 1 7 4 0 (2 3 (6 5) 1 7 4 0 (2 3 (7 3 5) 1 (6 2 0 4 (7 (6 5) 4 3 (2 1 0 2) 3) 4) 1) (3 (1 (4 (0 (2 3 1 4 0 2 3 1 4 0 2 3 1 4 0 2 3 1 4 0 2 (3 (1 (4 (0 0) (2 3 1 4 0 2 4 7 0 2 1 5 3 6 (0) (0) (7) (7) 7 (0) (4) (0) (4) 4 0 (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (7) (4) (0) (2) (3) (6) (5) (1) (2) (3) (3) (5) (1) (6) (2) (0) (4) (6) (5) (4) (3) (2) (1) (0) (2) (3) (4) (1) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (2) (3) (1) (4) (0) (0) (2) (3) (1) (4) (0) (2) (7) (7) (7) (4) (0) 5 4 0 7 3 1 6 2 (7) (6) (5) (4) (3) (2) (1) (0) (0) (0) (0) (0) (0) (0) (0) (0) (7) (6) (5) (4) (3) (2) (1) (0) (1) (1) (1) (1) (1) (1) (1) (1) (7) (6) (5) (4) (3) (2) (1) (0) (2) (2) (2) (2) (2) (2) (2) (2) (7) (6) (5) (4) (3) (2) (1) (0) (3) (3) (3) (3) (3) (3) (3) (3) (7) (6) (5) 4) (3) (2) (1) (0) (4) (4) (4) (4) (4) (4) (4) (4) (j) ( ) (j+1) (j+0) (i+1) (i+1) 5 4 0 7 3 1 6 2 start open-edge connectivity (j) ( ) (j+1) (j+0) (i+1) (i+1) typical connectivity array size closed-edge connectivity end 112 1 create net v.0 (0 feedback) 0 start the process 5 create net v.1 (1 feedback) 6 start dynamic relaxation (1 feedback) 2 start dynamic relaxation (0 feedback) input topology geometry
conclusion 3.2.3 Embedded Feedback
p iradius 113 analysis net v.0 net v.1 3 analyze threshold conditions 4 change parameters

(http://twenty1f.com/high-techlow-tech-exhibition/)

3.3-1 Argyle pullover (2001/2). Luna Maurer / Roel Wouters. Acryl. Machine braided. image: Luna Maurer.
114 3.3 Outlook
3.3-1

The translation from computation to fabrication is an on-going avenue for research. It is particularly critical with tension-active structures where force is “live” and an embedded feature in the design process. With the Marsyas example, ARUP chose to utilize a form-finding software to generate a static geometry, though presumably built of minimal surfaces. With the AA Installation, it was chosen to build a tensioned net, though the tension had a different dynamic from that of the computational model. The computational model used springs of all similar rest lengths. The physical structure used strings of different lengths (though measured to a shorter distance than what the digital model indicated, to automatically incite tension in the structure). This version, computationally, would mean that each spring would have a different rest length.

These types of comparisons are important to continue to experiment with, setting up computational models and testing results with constructed models. When moving up in scale, these issues become even more critical, placing more scrutiny on the nodes (connections) as well as the strings.

115
116
2 outlook 3.3.1 Translations to Material and Fabrication
3.3-

3.3-2

The rest lengths of each spring can be accessed and changed at any time during the process of dynamic relaxation.

Because every spring (of the same type) has the same rest length spring is stretched to a different degree. The resulting actual length indicates the distribution of forces throughout the entire structure. The areas of high tension are colored red.

3.3-3

Two lines of code are enough to change the force distribution from one second to another, while maintaining the structural integrity of the tension active system. The code is executed at frame 100 of the process of dynamic relaxation and every 20th frame after that. It checks, if a spring is stretched “too much” (beyond twice its rest length, in this case) and resets the rest length to three quarters of the actual, measured distance. This keeps the spring in tension and unifies the distribution of force. In the physical world, the different rest length values would equate to different material lengths (which can be grouped to larger sets of strings for manageability, as shown in the AA exhibition), whereas the model shown in 3.32 represents a model made out of very elastic material - but of the same rest Length.

117
3.3-3
118 3.3-4 outlook 3.3.1 Translations to Material and Fabrication

3.3-4

the transparency of the digital form finding process allows all information related to structure and geometry to be accessed at all times. The computational spring is the one element in the current models, that drive the process of dynamic relaxation. The next interesting steps would include a validation of the process by the use of elastic material in another, larger physical prototype (3.3-5). In a next step, as larger structures would have to be tested, stronger materials would have to be used, utilizing the individual rest length function described on the previous page (3.3-6). It is necessary to expand the view from the singular element to larger networks and the way in which they are fabricated. Fishing nets are such examples Usually they do consist of similar mesh sizes (3.3-7). The automation of weaving and braiding through industrial machines (3.3-8) potentially enables the realization of nets with differing mesh sizes as shown by Evan Greenberg in his EmTech dissertation (MSc 2008).

119
3.3-7 3.3-6 3.3-4
3.3-5

4 REFERENCES

120

Hensel, M and Menges, A, Inclusive Performance: Efficiency versus Effectiveness, Versatility and Vicissitude: Performance in Morpho-Ecological Design, 2008, Volume 78 No 2, 54-63.

Carroll, S, Endless Forms Most Beautiful: The new Science of Evo-Devo and the Making of the Animal Kingdom. London, Orion Books Ltd, Phoenix, 2007.

Medhi, D and Ramasamy, K, Network Routing: Algorithms, Protocols, and Architectures, Morgan Kaufmann Publishers, San Francisco, 2007.

Dye, M, McDonald, R and Rufi, A, Network Fundamentals, CCNA Exploration Companion Guide, Cisco Press, 2007.

Rutten, D, RhinoScript for Rhinoceros 4.0, Robert McNeel & Associates, Seattle, 2007.

Pottman, H, Aspel, A, Hofer, M, Kilian, A, Bentley, D, Architectural Geometry, Bentley Institute Press, Exton, 2007.

Greenwold, S, Form-Finding and Structural Optimization: Gaudi Workshop. MIT, Cambridge, 2004.

Wills, T, DForms: Concept by Toni Wills, http://local.wasp.uwa.edu.au/~pbourke/surfaces_curves/dform/ [01-04-08]

Turner, J, The Tinkerer’s Accomplice: How Design Emerges from Life Itself, Harvard University Press, Boston, 2007.

Johnson, S, Emergence: The Connected Lives of Ants, Brains, Cities, and Software, Penguin Books, London, 2001.

Frazer, J, Themes VII: An Evolutionary Architecture, AA Publications, London, 1995.

Evans, R, Figures, Doors & Passages, Translations from Drawing to Building and Other Essays, Architectural Association Publications, London, 2003.

Holland, J, Emergence: From Chaos to Order, Oxford University Press, Oxford, 2000.

Berlinski, D, The Advent of the Algorithm, Harcourt, Florida,2001.

Leach, N, Turnbull, D, Williams, C, Digital Tectonics, Wiley Academy, West Sussex, 2004.

Hight, C, Architectural Principles in the Age of Cybernetics, Routledge, 2008.

Kemp, M, Seen/Unseen, Oxford University Press, Oxford, 2006.

Hensel, M, Menges, A, Weinstock, M, Techniques and Technologies in Morphogenetic Design, 2006, Volume 76 No 2.

Hensel, M, Menges, A, Weinstock, M, Emergence: Morphogenetic Design Strategies, 2004, Volume 74 No 3

Bedau, M, Emergence: Contemporary Readings in Philosophy and Science, The MIT Press, Cambridge, 2008.

Otto, F, Netze in Natur und Technik - Nets in Nature and Technique. IL 8, Stuttgart: Institut für Leichte Flächentragwerke, 1976.

Reas, C, Fry, B, Processing: A Programming Handbook for Visual Designers and Artists, The MIT Press, Cambridge, 2007.

Yoshida, N, A+U Special Issue: Cecil Balmond, May 2006, Volume 2006:10.

121

5 APPENDIX

122
5.1 Apendix A: Rhino Scripts 5.2 Apendix B: Processing Scripts 5.3 Apendix C: Work Map 5.4 DVD
123
124
5.1 Rhino Scripts
125

Option Explicit

'Script written by Sean Ahlquist

'Script copyrighted by morse

'Script version Friday, November 21, 2008 5:49:21 PM

''/////create excel file

Dim objXL , objXLSheet

''Dim xlRight = -4152

Set objXL = CreateObject ( "Excel.Application" )

objXL . Visible = True

objXL WorkBooks Add

objXL Columns Select

objXL Columns ColumnWidth 7

objXL Selection HorizontalAlignment =- 4152

objXL UserControl = True

Set objXLSheet = objXL . ActiveWorkbook . WorkSheets ( 1 )

Call idCornerPoints ()

Sub idCornerPoints ()

Dim boundarySurfs

boundarySurfs = rhino . GetObjects ( "select TOP and BOTTOM surfaces (in PAIRS)" , 8 )

If IsNull ( boundarySurfs ) Then Exit Sub

If ( ubound ( boundarysurfs )+ 1 ) Mod ( 2 )<> 0 Then rhino print "even numbered set of surfaces required exiting routine"

Exit Sub

End If

Dim i , j , k , kk , m , pairCount , ptListCount , cp (), edges , tempPt0 , tempPt1 , edges0 , edges1 , ptCount , edgeCountVaries , ptDirection , vectorBaseLine

Dim textDot ptListCount = 0 pairCount = 0

For m 0 To ( ubound ( boundarySurfs )+ 1 )/ 2 - 1

''/////determine the MAX value of corner points rhino . EnableRedraw False edges0 = rhino DuplicateEdgeCurves ( boundarySurfs ( m * 2 ))

edges1 rhino DuplicateEdgeCurves ( boundarySurfs (( m * 2 )+ 1 ))

If ubound ( edges0 ) > ubound ( edges1 ) Then rhino Print ( "point count varies" )

ptCount = ubound ( edges0 )

edgeCountVaries = True

ElseIf ubound ( edges0 ) ubound ( edges1 ) Then rhino Print ( "point count EQUAL" )

ptCount = ubound ( edges0 )

edgeCountVaries = False

Else

rhino Print ( "point count varies" )

ptCount ubound ( edges1 )

edgeCountVaries True

End If

rhino Print "max number of cPts: " & ptCount + 1

rhino . DeleteObjects edges0

rhino DeleteObjects edges1

rhino EnableRedraw True

For k = pairCount To pairCount + 1

edges rhino DuplicateEdgeCurves ( boundarySurfs ( k ))

rhino print "ubound edges: " & ubound ( edges )

If edgeCountVaries = True And ubound ( edges ) < ptCount Then rhino Print "edge count varies between two surfaces"

If k = pairCount Then

kk = pairCount + 1

Else

kk pairCount

End If

''/////rebuild edge for surface that has less corner points

edges = rebuildEdges ( boundarySurfs ( k ), boundarySurfs ( kk ))

rhino print "ubound edges (rebuilt): " & ubound ( edges )

End If

''////create first two corner pts based on edges(0)

If k = pairCount Then

ReDim Preserve cPt ( 1 )

cPt ( 0 ) rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))( 0 ))

cPt ( 1 ) = rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))( 1 ))

vectorBaseLine = array ( cPt ( 0 ), cPt ( 1 ))

appendix A: rhino scripts 126 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83

''////create first two corner pts based on edges(0)

If k = pairCount Then

ReDim Preserve cPt ( 1 )

cPt ( 0 ) = rhino . EvaluateCurve ( edges ( 0 ), rhino . CurveDomain ( edges ( 0 ))( 0 ))

cPt ( 1 ) rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))( 1 ))

vectorBaseLine = array ( cPt ( 0 ), cPt ( 1 ))

Else

ReDim Preserve cPt ( 1 )

cPt ( 0 ) rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))( 0 ))

cPt ( 1 ) = rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))( 1 ))

''///determine the proper cPt0 as compared to other string of points

''/////compare angle to determine clock-wise or counterclockwise

'' ptDirection = setDirection(edges,vectorBaseLine)

'' ReDim Preserve cPt(1)

'' cPt(0) = ptDirection(0)

'' cPt(1) ptDirection(1)

End If

Call rhino AddPoint ( cPt ( 0 ))

textDot = rhino . AddTextDot ( k & ".0" , cPt ( 0 ))

Call rhino ObjectColor ( textDot , RGB ( 45 , 45 , 45 ))

Call rhino AddPoint ( cPt ( 1 ))

textDot rhino AddTextDot ( k & ".1" , cPt ( 1 ))

Call rhino ObjectColor ( textDot , RGB ( 45 , 45 , 45 ))

Dim xpt1 , xpt2

rhino print "ubound edges: " & ubound ( edges )

For i 2 To ubound ( edges )

''/////identify proper J value AND whether it is

CurveDomain (0) or (1) for next line in the chain

''/////means one end aligns with previous cPt AND opposite end of J line does NOT match up with the 2nd previous cPt For j 1 To ubound ( edges )

tempPt0 = rhino EvaluateCurve ( edges ( j ), rhino CurveDomain ( edges ( j ))( 0 ))

tempPt1 = rhino EvaluateCurve ( edges ( j ), rhino

CurveDomain ( edges ( j ))( 1 ))

If Round ( tempPt0 ( 0 ), 1 ) = Round ( cPt ( i - 1 )( 0 ), 1 ) And Round ( tempPt0 ( 1 ), 1 ) = Round ( cPt ( i - 1 )( 1 ), 1 ) And Round ( tempPt0 ( 2 ), 0 ) =

Round ( cPt ( i - 1 )( 2 ), 0 ) Then

If Round ( tempPt1 ( 0 ), 1 ) <> Round ( cPt ( i - 2 )( 0 ), 1 )

Or Round ( tempPt1 ( 1 ), 1 ) <> Round ( cPt ( i - 2 )( 1 ), 1 ) Or Round ( tempPt1 ( 2 ), 1 ) <> Round ( cPt ( i - 2 )( 2 ), 1 ) Then

ReDim Preserve cPt ( i )

cPt ( i ) = rhino . EvaluateCurve ( edges ( j ), rhino .

CurveDomain ( edges ( j ))( 1 ))

End If

ElseIf Round ( tempPt1 ( 0 ), 1 ) Round ( cPt ( i - 1 )( 0 ), 1 )

And Round ( tempPt1 ( 1 ), 1 ) Round ( cPt ( i - 1 )( 1 ), 1 ) And Round ( tempPt1 ( 2 ), 1 )

Round ( cPt ( i - 1 )( 2 ), 1 ) And tempPt0 ( 0 ) <> cPt ( i - 2 )( 0 ) And tempPt0 ( 1 ) <> cPt ( i - 2 )( 1 ) And tempPt0 ( 2 ) <> cPt ( i - 2 )( 2 ) Then

ReDim Preserve cPt ( i )

cPt ( i ) = rhino EvaluateCurve ( edges ( j ), rhino

CurveDomain ( edges ( j ))( 0 ))

Else rhino Print "didnt work"

End If

Next rhino Print "i: " & ( i ) & " j: " & j

Call rhino AddPoint ( cPt ( i ))

textDot = rhino AddTextDot ( k & "." & i , cPt ( i ))

Call rhino ObjectColor ( textDot , RGB ( 45 , 45 , 45 ))

Next

Call pointDataExcel ( cPt , k , ptListCount )

Call rhino DeleteObjects ( edges )

ptListCount = ptListCount + ubound ( cPt ) + 1

Next pairCount pairCount + 2 Next

127 2 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
End Sub

Function rebuildEdges ( ByVal bSrfLess , ByVal bSrfMore )

''break up lines until you have the right number of corner points

Dim i , j , k , edg0 , edg1 , newCount , maxCount , dom0 , dom1 , tmpEdg0 , tmpEdg1 , arrEdg0 ()

edg0 = rhino DuplicateEdgeCurves ( bSrfLess )

edg1 = rhino . DuplicateEdgeCurves ( bSrfMore )

newCount ubound ( edg0 )

maxCount ubound ( edg1 )

Do While newCount < maxCount rhino . Print "remake edges"

''/////compare edgelengths - subdivide the long ones

For i 0 To newCount

If rhino CurveLength ( edg0 ( i )) > rhino CurveLength ( edg1 ( i ))*.

5 Then

''//split the line into 2 pieces

rhino . SelectObject edg0 ( i )

rhino Command "-reparameterize 0 100"

rhino UnselectAllObjects

dom0 rhino CurveDomain ( edg0 ( i ))( 0 )

dom1 = rhino CurveDomain ( edg0 ( i ))( 1 )

tmpEdg0 = rhino AddLine ( rhino CurveStartPoint ( edg0 ( i )), rhino . EvaluateCurve ( edg0 ( i ),( dom1 - dom0 )*. 5 ))

tmpEdg1 = rhino AddLine ( rhino EvaluateCurve ( edg0 ( i ),( dom1 - dom0 )*. 5 ), rhino CurveEndPoint ( edg0 ( i )))

''//reassemble all edges

ReDim Preserve arrEdg0 ( i + 1 )

arrEdg0 ( i ) = tmpEdg0

arrEdg0 ( i + 1 ) = tmpEdg1

k = i + 2

For j = ( i + 1 ) To ubound ( edg0 )

ReDim Preserve arrEdg0 ( k )

arrEdg0 ( k ) edg0 ( j )

k = k + 1

Next Exit For

Else

Next

ReDim Preserve arrEdg0 ( i ) arrEdg0 ( i ) edg0 ( i )

End If

newCount = ubound ( arrEdg0 ) edg0 arrEdg0

Loop rebuildEdges = arrEdg0

'rhino.DeleteObjects(array(tmpEdg0,tmpEdg1))

'rhino.DeleteObjects edg0

rhino DeleteObjects edg1

rhino Print "new edges done, new count: " & ubound ( arrEdg0 )+ 1

End Function

Function

setDirection ( ByVal edges , ByVal vBaseLine )

Dim vectorPtBase , vectorPt0 , vectorPt1 , vector1a , vector1b , vectorLine0 , vectorLine1 , cPt0 , cPt1

vectorPtBase = rhino AddPoint ( vBaseLine ( 0 ))

vectorPt0 rhino AddPoint ( vBaseLine ( 0 ))

vectorPt1 rhino AddPoint ( vBaseLine ( 0 ))

vector1a = rhino VectorCreate ( rhino CurveStartPoint ( edges ( 0 )), rhino

CurveEndPoint ( edges ( 0 )))

vector1b rhino VectorCreate ( rhino CurveEndPoint ( edges ( 0 )), rhino

CurveStartPoint ( edges ( 0 )))

Call rhino MoveObject ( vectorPt0 , vector1a )

Call rhino . MoveObject ( vectorPt1 , vector1b )

vectorLine0 = array ( rhino PointCoordinates ( vectorPtBase ), rhino

PointCoordinates ( vectorPt0 ))

vectorLine1 array ( rhino PointCoordinates ( vectorPtBase ), rhino

PointCoordinates ( vectorPt1 ))

appendix A: rhino scripts 128 3 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 pointDataExcel ( , , ptListCount ) Call rhino DeleteObjects ( edges ) ptListCount ptListCount + ubound ( cPt ) + 1 Next pairCount = pairCount + 2 Next End Sub
4 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
212 213 214 215 216 217 218 219 220
)
rhino Angle2
vBaseLine
vectorLine1
If rhino Angle2 ( vBaseLine , vectorLine0 )( 0
>
(
,
)( 0 ) Then cPt0 = rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))(

( edges ( )))

Call rhino MoveObject ( vectorPt0 , vector1a )

Call rhino . MoveObject ( vectorPt1 , vector1b )

vectorLine0 = array ( rhino PointCoordinates ( vectorPtBase ), rhino PointCoordinates ( vectorPt0 )) vectorLine1 array ( rhino PointCoordinates ( vectorPtBase ), rhino PointCoordinates ( vectorPt1 ))

If rhino . Angle2 ( vBaseLine , vectorLine0 )( 0 ) > rhino . Angle2 ( vBaseLine , vectorLine1 )( 0 ) Then

cPt0 rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))( 0 ))

cPt1 = rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))( 1 ))

Else

cPt0 = rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))( 1 ))

cPt1 rhino EvaluateCurve ( edges ( 0 ), rhino CurveDomain ( edges ( 0 ))( 0 ))

End If

setDirection = array ( cPt0 , cPt1 )

End Function

Function pointDataExcel ( ByVal ptArr , ByVal surfNum , ByVal ptSetCount )

Dim i , j , k , m

m = 1

k 1

For i = 0 To ubound ( ptArr ) 'cells(row,column) objXL . Cells (( i + ptSetCount ) + 1 , 1 ). Value = i ''point

i + ptSetCount ) + 1 , 12 ). NumberFormat = "@" ''

shared edge ID'ed objXL Cells (( i + ptSetCount ) + 1 , 13 ). NumberFormat = "0" ''

excel line determining other point on THIS surface that defines edge

objXL Cells (( i + ptSetCount ) + 1 , 14 ). NumberFormat = "0" ''

excel line determining FIRST point on OTHER surface that defines edge

objXL Cells (( i + ptSetCount ) + 1 , 15 ). NumberFormat "0" ''

excel line determining SECOND point on OTHER surface that defines edge

objXL Cells (( i + ptSetCount ) + 1 , 16 ). NumberFormat = "0.0" '' multiplier for stiffness of anchor cable at this point

If i = 0 Then

objXL Cells (( i + ptSetCount ) + 1 , 9 ). Value ubound ( ptArr ) +

1 ''number of points in set

End If

Next

'''/////test for fixed or unfixed and identify relationships for shared points

For i = 1 To uBound ( ptArr ) + ptSetCount +

For

129 5 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252
Cells
1
2
Value
) + 1 , 3 ). Value =
16
Y value objXL . Cells (( i + ptSetCount ) + 1 , 4 ). Value = Round ( ptArr ( i )( 2 ), 16 ) ''point Z value objXL Cells (( i + ptSetCount ) + 1 , 5 ). NumberFormat "@" objXL Cells (( i + ptSetCount ) + 1 , 5 ). Value "true" ''fixed or unfix !!!need test to determine fixed or not objXL Cells (( i + ptSetCount ) + 1 , 6 ). Value = "particle" ''type objXL Cells (( i + ptSetCount ) + 1 , 7
surface number objXL Cells
ptSetCount
1
NumberFormat
objXL Cells
objXL
NumberFormat
objXL Cells
ptSetCount
1
10 ). NumberFormat
shared pt ID'ed objXL Cells
ptSetCount
NumberFormat
excel line
objXL Cells
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
number objXL
(( i + ptSetCount ) +
,
).
Round ( ptArr ( i )( 0 ), 16 ) ''point X value objXL Cells (( i + ptSetCount
Round ( ptArr ( i )( 1 ),
) ''point
). Value = surfNum ''
(( i +
) +
, 8 ).
"@"
(( i + ptSetCount ) + 1 , 8 ). Value = "true" ''visible
. Cells (( i + ptSetCount ) + 1 , 9 ).
= "@"
(( i +
) +
,
= "@" ''
(( i +
) + 1 , 11 ).
"0" ''
determining connected pt
((
253
1
j
1
uBound ( ptArr ) + ptSetCount + 1 If i <> j And i < j Then If Round ( objXLSheet Cells ( i , 2 ). Value , 1 ) = Round ( objXLsheet Cells ( j , 2 ). Value , 1 ) And Round ( objXLsheet Cells ( i , 3 ). Value , 1 ) Round ( objXLsheet Cells ( j , 3 ). Value , 1 ) And Round ( objXLsheet Cells ( i , 4 ) Value , 1 ) = Round ( objXLsheet Cells ( j , 4 ). Value , 1 ) Then objXL Cells ( i , 5 ). Value = "false" objXL . Cells ( i , 10 ). Value = "point" objXL Cells ( i , 16 ). Value = Null objXL Cells ( j , 10 ). Value = "point" objXL Cells ( j , 5 ). Value "false" objXL Cells ( j , 11 ). Value i objXL Cells ( j , 16 ). Value = Null ElseIf objXL Cells ( i , 5 ). Value = "true" Then objXL . Cells ( i , 16 ). Value = 0.5 ElseIf objXL Cells ( j , 5 ). Value = "true" Then
=
To

'''/////test for shared edges - where 2 points of one surface define an edge that is exactely shared with an edge of another surface

''in this case, k is the last point in the array, and m is the ZERO point of the array

If objXL Cells (( objXL Cells ( k , 11 ). value ), 7 ) objXL Cells (( objXL Cells ( m , 11 ). value ), 7 ) And objXL Cells ( k , 11 ). value > 0 And objXL Cells ( m , 11 ). value > 0 Then

objXL Cells ( m , 12 ). Value = "edge" 'this is the LEADING pt for this edge

objXL Cells ( m , 13 ). Value = k

objXL Cells ( m , 14 ). Value = objXL Cells ( m , 11 ). Value

objXL Cells ( m , 15 ). Value objXL Cells ( k , 11 ). Value

If objXL Cells ( objXL Cells ( m , 11 ). Value , 1 ) 0 Or

objXL Cells ( objXL Cells ( m , 11 ). Value , 1 )> objXL Cells ( objXL Cells ( k , 11 ).

Value , 1 ) Then

objXL Cells ( objXL Cells ( m , 11 ). Value , 12 )= "edge" ' this is the LEADING pt for the OTHER edge

Else

objXL Cells ( objXL Cells ( k , 11 ). Value , 12 )= "edge" ' this is the LEADING pt for the OTHER edge

End If

End If

ElseIf objXL . Cells ( k , 10 ). Value = "point" And objXL . Cells ( k + 1 , 10 ). Value = "point" And objXL Cells ( k , 11 ). Value > 0 And objXL Cells ( k + 1 , 11 ).

Value > 0 Then

objXL Cells ( objXL Cells ( k , 11 ). value , 7 ) objXL Cells ( objXL Cells ( k + 1 , 11 ). value , 7 ) Then

If

objXL Cells ( k + 1 , 12 ). Value = "edge" 'this is the LEADING pt for this edge

objXL . Cells ( k + 1 , 13 ). Value = k

objXL Cells ( k + 1 , 14 ). Value = objXL Cells ( k + 1 , 11 ).

Value

objXL Cells ( k + 1 , 15 ). Value objXL Cells ( k , 11 ). Value

If objXL Cells ( objXL Cells ( k , 11 ). Value , 1 ) = 0 And objXL Cells ( objXL Cells ( k + 1 , 11 ). Value , 1 ) > objXL Cells ( objXL Cells ( k , 11 ). Value , 1 )+ 1 Then

''if one point is the ZERO point, and the other is the MAX ARRAY point the ZERO point is the leading point

objXL Cells ( objXL Cells ( k , 11 ). Value , 12 )= "edge" ' this is the LEADING pt for the OTHER edge

ElseIf objXL Cells ( objXL Cells ( k , 11 ). Value , 1 )> objXL Cells ( objXL . Cells ( k + 1 , 11 ). Value , 1 ) Then

objXL Cells ( objXL Cells ( k , 11 ). Value , 12 )= "edge" ' this is the LEADING pt for the OTHER edge

Else

objXL Cells ( objXL Cells ( k + 1 , 11 ). Value , 12 )= "edge"

'this is the LEADING pt for the OTHER edge

End If

End If

If objXL Cells ( objXL Cells ( k + 1 , 11 ). Value , 11 ). Value > 0 Then

''this means that the k+1 point is shared by TWO other points

If objXL Cells ( objXL Cells ( objXL Cells ( k + 1 , 11 ). Value , 11 ). Value , 7 ). Value = objXL . Cells ( objXL . Cells ( k , 11 ). Value , 7 ). Value Then

'' and it Is a part of a shared edge

objXL Cells ( k + 1 , 12 ). Value "edge" 'this is the LEADING pt for this edge

objXL Cells ( k + 1 , 13 ). Value = k

objXL Cells ( k + 1 , 14 ). Value = objXL Cells ( objXL

Cells ( k + 1 , 11 ). Value , 11 ). Value

objXL

appendix A: rhino scripts 130 6 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 , ) ( objXLsheet ( j , ). , ) objXL Cells ( i , 5 ). Value = "false" objXL Cells ( i , 10 ). Value "point" objXL Cells ( i , 16 ). Value Null objXL Cells ( j , 10 ). Value = "point" objXL Cells ( j , 5 ). Value = "false" objXL . Cells ( j , 11 ). Value = i objXL Cells ( j , 16 ). Value = Null ElseIf objXL Cells ( i , 5 ). Value "true" Then objXL Cells ( i , 16 ). Value 0.5 ElseIf objXL Cells ( j , 5 ). Value = "true" Then objXL Cells ( j , 16 ). Value = 0.5 End If End If Next Next
Do While k < uBound ( ptArr ) + ptSetCount + 1 For i 1 To objXL Cells ( m , 9 ) If k ( m + objXL Cells ( m , 9 ))- 1 And objXL Cells ( k , 10 ). Value " point" And objXL Cells ( m , 10 ). Value = "point" And objXL Cells ( k , 11 ). Value > 0 And objXL Cells ( m , 11 ). Value > 0 Then
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327
Value
objXL
objXL
k + 1
15
Value
1
Value 0 And objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ) > objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 ). Value + 1 Then ''if one point is the ZERO point, and the other is the MAX ARRAY point ... the ZERO point is the leading point objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 12 )= " edge" 'this is the LEADING pt for the OTHER edge ElseIf objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 )> objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ) And objXL Cells ( objXL Cells ( k +
Cells ( k + 1 , 15 ). Value = objXL Cells ( k , 11 ).
If
Cells (
Cells (
,
).
,
).

Value = 0 And objXL . Cells ( objXL . Cells ( k + 1 , 14 ). Value , 1 ) > objXL . Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 ). Value + 1 Then

''if one point is the ZERO point, and the other is the MAX ARRAY point the ZERO point is the leading point

objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 12 )= "

edge" 'this is the LEADING pt for the OTHER edge

ElseIf objXL . Cells ( objXL . Cells ( k + 1 , 15 ). Value , 1 )>

objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ) And objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ). Value <> 0 Then

objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 12 )= "

edge" 'this is the LEADING pt for the OTHER edge

ElseIf objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ).

Value 0 And objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 ) > objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ). Value + 1 Then

objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 12 )= "

edge" 'this is the LEADING pt for the OTHER edge

ElseIf objXL . Cells ( objXL . Cells ( k + 1 , 14 ). Value , 1 )=

objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 ) + 1 Then

objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 12 )= " edge" 'this is the LEADING pt for the OTHER edge

End If End If End If

If objXL Cells ( objXL Cells ( k , 11 ). Value , 11 ). Value > 0 Then ''this means that the k point is shared by TWO other points

If objXL Cells ( objXL Cells ( objXL Cells ( k , 11 ). Value , 11 ). Value , 7 ). Value = objXL . Cells ( objXL . Cells ( k + 1 , 11 ). Value , 7 ). Value Then '' and it Is a part of a shared edge

objXL Cells ( k + 1 , 12 ). Value "edge" 'this is the LEADING pt for this edge

objXL Cells ( k + 1 , 13 ). Value = k

objXL Cells ( k + 1 , 14 ). Value = objXL Cells ( k + 1 , 11 ).

Value

objXL Cells ( k + 1 , 15 ). Value = objXL Cells ( objXL Cells ( k , 11 ). Value , 11 ). Value

If objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 ).

Value 0 And objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ) > objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 ). Value + 1 Then

''if one point is the ZERO point, and the other is the MAX ARRAY point the ZERO point is the leading point

objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 12 )= "

edge" 'this is the LEADING pt for the OTHER edge

ElseIf objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 )>

objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ) And objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ). Value <> 0 Then

objXL . Cells ( objXL . Cells ( k + 1 , 15 ). Value , 12 )= "

edge" 'this is the LEADING pt for the OTHER edge

ElseIf objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 ).

Value 0 And objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 ) > objXL Cells (

objXL Cells ( k + 1 , 14 ). Value , 1 ). Value + 1 Then

objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 12 )= "

edge" 'this is the LEADING pt for the OTHER edge

ElseIf objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 1 )=

objXL Cells ( objXL Cells ( k + 1 , 15 ). Value , 1 ) + 1 Then

objXL Cells ( objXL Cells ( k + 1 , 14 ). Value , 12 )= "

edge" 'this is the LEADING pt for the OTHER edge

End If

End If

End If

End If

k = k + 1

Next

m = k Loop

End Function

131
324 325 326 327 328 objXL
objXL ( , ).
Value
7
( , ).
Value If objXL Cells ( objXL Cells ( k + 1 , 15 ).
, 1 ).
8 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364

Option Explicit

'Script written by <insert name>

'Script copyrighted by <insert company name>

'Script version Sunday, November 09, 2008 2:27:21 PM

Call Main ()

Sub Main ()

Dim progLines

progLines rhino GetObjects ( "select program lines in order" )

If IsNull ( progLines ) Then Exit Sub

Call varyProgInput ( progLines )

End Sub Function varyProgInput ( ByVal progElements )

Dim tempUnits , eNumTotal , arrStart , pUnit (), rList , newProgElements (),

tempElement

Dim i , j , k

eNumTotal - 1 k 0

'determine number of total UNITS and rebuild as individual 100cm lines

For i = 0 To ubound ( progElements )

tempUnits = rhino CurveLength ( progElements ( i ))/ 100

For j 0 To tempUnits - 1

eNumTotal eNumTotal + 1

ReDim Preserve pUnit ( eNumTotal )

arrStart = array ( rhino CurveStartPoint ( progElements ( 0 ))( 0 ), rhino . CurveStartPoint ( progElements ( 0 ))( 1 ) + 100 , rhino . CurveStartPoint ( progElements ( 0 ))( 2 ))

pUnit ( eNumTotal ) rhino AddLine ( arrStart , array ( rhino CurveStartPoint ( progElements ( 0 ))( 0 ) + 100 , rhino CurveStartPoint ( progElements ( 0 ))( 1 ) + 100 , rhino CurveStartPoint ( progElements ( 0 ))( 2 )))

rhino ObjectColor pUnit ( eNumTotal ), rhino ObjectColor ( progElements ( i ))

rhino ObjectPrintColor pUnit ( eNumTotal ), rhino ObjectColor ( progElements ( i ))

rhino ObjectPrintWidth pUnit ( eNumTotal ), 1.00 Next Next

'generate RANDOMLY ORDERED LIST of numbers rList randomList ( pUnit )

'develop UNIQUE ORDER for program UNITS For i = 0 To ubound ( pUnit ) Call rhino . MoveObject ( pUnit ( rList ( i )), array ( 0 , 0 , 0 ), array ( i * 100 , 0 , 0 )) Next

'join NEIGHBORING UNITS of same program type

For i = 1 To ubound ( pUnit ) If i = 1 Then

If rhino . ObjectColor ( pUnit ( rList ( i ))) = rhino . ObjectColor ( pUnit ( rList ( i - 1 ))) Then

ReDim Preserve newProgElements ( k )

newProgElements ( k ) rhino AddLine ( rhino CurveStartPoint (

pUnit ( rList ( i - 1 ))), rhino CurveEndPoint ( pUnit ( rList ( i ))))

rhino

ObjectColor newProgElements ( k ), rhino ObjectColor ( pUnit ( rList ( i )))

rhino ObjectPrintColor newProgElements ( k ), rhino

ObjectColor ( pUnit ( rList ( i )))

rhino ObjectPrintWidth newProgElements ( k ), 2.00

k = k + 1

Else ReDim Preserve newProgElements ( k )

newProgElements ( k ) = rhino AddLine ( rhino CurveStartPoint ( pUnit ( rList ( i - 1 ))), rhino CurveEndPoint ( pUnit ( rList ( i - 1 ))))

rhino ObjectColor newProgElements ( k ), rhino ObjectColor (

pUnit ( rList ( i - 1 )))

rhino ObjectPrintColor newProgElements ( k ), rhino

ObjectColor ( pUnit ( rList ( i - 1 )))

rhino ObjectPrintWidth newProgElements ( k ), 2.00

k =

k + 1

ReDim Preserve newProgElements ( k )

newProgElements ( k ) rhino AddLine ( rhino CurveStartPoint (

pUnit ( rList ( i ))), rhino CurveEndPoint ( pUnit ( rList ( i ))))

rhino ObjectColor newProgElements ( k ), rhino ObjectColor (

pUnit ( rList ( i )))

rhino ObjectPrintColor newProgElements ( k ), rhino

ObjectColor ( pUnit ( rList ( i )))

rhino ObjectPrintWidth newProgElements ( k ), 2.00

k = k + 1

appendix A: rhino scripts 132 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
End If Else If rhino ObjectColor ( pUnit ( rList ( i ))) rhino ObjectColor (

If rhino ObjectColor ( pUnit ( rList ( i ))) rhino ObjectColor ( newProgElements ( k - 1 )) Then tempElement = rhino AddLine ( rhino CurveStartPoint ( newProgElements ( k - 1 )), rhino . CurveEndPoint ( pUnit ( rList ( i )))) rhino DeleteObject newProgElements ( k - 1 ) newProgElements ( k - 1 ) tempElement

rhino ObjectColor newProgElements ( k - 1 ), rhino ObjectColor ( pUnit ( rList ( i ))) rhino ObjectPrintColor newProgElements ( k - 1 ), rhino

ObjectColor ( pUnit ( rList ( i )))

rhino ObjectPrintWidth newProgElements ( k - 1 ), 2.00

Else

ReDim Preserve newProgElements ( k )

newProgElements ( k ) = rhino AddLine ( rhino CurveStartPoint ( pUnit ( rList ( i ))), rhino CurveEndPoint ( pUnit ( rList ( i )))) rhino . ObjectColor newProgElements ( k ), rhino . ObjectColor ( pUnit ( rList ( i ))) rhino ObjectPrintColor newProgElements ( k ), rhino

ObjectColor ( pUnit ( rList ( i )))

rhino ObjectPrintWidth newProgElements ( k ), 2.00 k = k + 1 End If End If

Next

rhino DeleteObjects pUnit

rhino . Print "number of program Elements: " & ubound ( newProgElements )+ 1

rhino MoveObjects newProgElements , array ( 0 , 0 , 0 ), array ( 0 , 100 , 0 )

randomList ( ByVal pointList )

i , j , tempNum , numList (), randSeed i = 0

. Print "bound" & ubound ( pointlist )

= CInt ( Rnd * 1000 )

tempNum = numlist ( j - 1 ) Then rhino Print i & "_" & ( tempnum & "_repeat" )

"x"

For

ReDim Preserve numlist ( i ) numlist ( i )= tempnum

If

tempNum = "x" Then

rhino Print i & "_" & tempnum

i + 1 End If

ReDim Preserve numList ( i ) numlist ( i )= tempnum

Print i & "_" & tempnum

If Loop rhino Print "_______seed: " & randSeed

133 2 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 pUnit ( ( ))), ( pUnit ( ( )))) rhino ObjectColor newProgElements
ObjectColor
pUnit (
))) rhino ObjectPrintColor
ObjectPrintWidth newProgElements
k = k + 1 End If Else
( k ), rhino
(
rList ( i
newProgElements ( k ), rhino ObjectColor ( pUnit ( rList ( i ))) rhino
( k ), 2.00
varyProgInput newProgElements 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 End Function Function
randSeed
Rnd
23
Randomize
Do While
tempNum
If
For
If
End
Next
Else
i
i
End
randomList
End Function
Dim
rhino
(
*- 1 )
( randSeed )
i < ( Ubound ( pointList ) + 1 )
Int (( ubound ( pointList ) - 0 + 1 ) * Rnd + 0 )
i > 0 Then
j = 1 To i
tempNum
Exit
Else
If
Else
rhino
i + 1
numList

Option Explicit

'Script written by Morse

'Script copyrighted by Morse

'Script version Wednesday, April 30, 2008 11:59:03 AM

Call deployProgram () Sub deployProgram ()

'//////////inputs - bldgEnvelope and programAmount

Dim buildingEnvelope

buildingEnvelope rhino GetObject ( "select building envelope" , 16 , True )

If IsNull ( buildingEnvelope ) Then Exit Sub

Dim popStartNum popStartNum rhino GetInteger ( "start number for population" , 0 , 0 , 20 )

If IsNull ( popStartNum ) Then Exit Sub

Dim popCount popCount = rhino . GetInteger ( "maximum count in population" , 10 , 1 , 100 )

If IsNull ( popCount ) Then Exit Sub popCount ( popCount - 1 )

Dim popArray popArray = rhino GetString ( "generate population array?" , "y" )

If poparray = "y" Then

Dim popBranch popBranch rhino GetString ( "population branch" )

End If

Dim randRotMin

randRotMin = rhino GetInteger ( "amount of rotation variation, min" , 0 , 0 , 45 )

Dim randRotMax randRotMax = rhino GetInteger ( "amount of rotation variation, max" , 30 , 0 , 90 )

If randRotMin > randRotMax Then rhino Print "please set MAX value lower than MIN value"

Exit Sub

End If

Dim progOrig , progAmount , progAllVolume , progPercents , progLines progOrig = rhino . GetObjects ( "select lines to describe program amounts" , 4 ,, True )

If IsNull ( progOrig ) Then Exit Sub

progAllVolume = rhino SurfaceVolume ( buildingEnvelope )( 0 )

'' progPercents = programPercents(progLines) - dealt with later becasue generating new progLines for each individual

If rhino CapPlanarHoles ( buildingEnvelope ) True Then 'cap the main envelope if necessary Call rhino CapPlanarHoles ( buildingEnvelope )

End If

Dim popOffsetDist

appendix A: rhino scripts 134 3 137 138 139 140 141 142 143 144 145 146 rhino Print i & "_" & tempnum i = i + 1 End If Loop
randSeed randomList = numList End Function 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
rhino Print "_______seed: " &

popOffsetDist = popOffset ( buildingEnvelope , progOrig )

Dim baseEnvelope (), selectEnvelope , subdEnvelope , progEnvelope (), reducedEnvelope (), nearEnvelope , progColor , progGraphLine (), programGraphAvg (), xVal , yVal , xVal2 , yValOrg , yValTotal , yValAvg

Dim randRotVals (), randOffsetVals (), rotValsText (), crvStartX , crvStartY , textHeight

Dim g , h , i , j , k , m , n , o , p , q , r , s

For j = popStartNum To popCount

'//////////initiate original envelope

ReDim Preserve baseEnvelope ( 0 )

baseEnvelope ( 0 ) rhino CopyObject ( buildingEnvelope )

If popArray "y" Then

rhino MoveObject baseEnvelope ( 0 ), array ( 0 , 0 , 0 ), array (( j + 1 )*

popOffsetDist , 0 , 0 )

End If

rhino Print "initiating individual: " & j

'//////////generate array of random values and display as text

textHeight 20

crvStartX = ( rhino CurveStartPoint ( progOrig ( 0 ))( 0 ))

crvStartY = ( rhino CurveStartPoint ( progOrig ( 0 ))( 1 ))

Rnd (( j + 44 )*- 1 )

Randomize ( j * 3 +( j ^ 2 ))

rhino AddText "random seed: " & j * 3 +( j ^ 2 ), array ( crvStartX + ( j +

1 )* popOffsetDist , crvStartY -( textHeight * 2 ), 0 ), textHeight

rhino AddText "rotation min: " & randRotMin , array ( crvStartX + (

j + 1 )* popOffsetDist , crvStartY -( textHeight * 4 ), 0 ), textHeight

rhino . AddText "rotation max: " & randRotMax , array ( crvStartX + (

j + 1 )* popOffsetDist + ( textHeight * 10 ), crvStartY -( textHeight * 4 ), 0 ),

textHeight

rhino AddText "rotation values: " , array ( crvStartX + ( j + 1 )*

popOffsetDist , crvStartY -( textHeight * 6 ), 0 ), textHeight

For g = 0 To 9

ReDim Preserve randRotVals ( g )

randRotVals ( g ) = CInt (( randRotMax - randRotMin ) * Rnd +

randRotMin )

rhino AddText randRotVals ( g ), array ( crvStartX + ( j + 1 )*

popOffsetDist + ( textHeight * 10 ) + (( g +. 02 )*( textHeight * 2 )), crvStartY -( textHeight * 6 ), 0 ), textHeight

Next

rhino AddText "offset multiplier values: " , array ( crvStartX + ( j +

1 )* popOffsetDist , crvStartY -( textHeight * 8 ), 0 ), textHeight

For h 0 To 4

ReDim Preserve randOffsetVals ( h )

randOffsetVals ( h ) = CInt ( Round ( Rnd (), 2 )* 100 )*. 01

rhino . AddText randOffsetVals ( h ), array ( crvStartX + ( j + 1 )*

popOffsetDist + ( textHeight * 14 ) + (( h + 0.2 )*( textHeight * 3.5 )), crvStartY -(

textHeight * 8 ), 0 ), textHeight

Next

'////////generate unique progLines input for each individual progLines = varyProgInput ( progOrig )

rhino MoveObjects progLines , array ( 0 , 0 , 0 ), array (( j + 1 )* popOffsetDist , 0 , 0 )

progPercents programPercents ( progLines )

For i = 0 To ubound ( progPercents )

progAmount = ( progPercents ( i )) * progAllVolume

rhino Print "initial program amount: " & progAmount & " overall volume: " & progAllVolume

progColor = rhino ObjectColor ( progLines ( i ))

ReDim Preserve progEnvelope ( 0 )

progEnvelope ( 0 ) = Empty m 0

'//////////begin recursion to deploy Program - initial step

Do While IsEmpty ( progEnvelope ( 0 )) = True

If IsEmpty ( progEnvelope ( 0 )) = True And ubound ( baseEnvelope ) = 0 Then 'this signifies first step in process where subdivision and determining volume is priority

rhino Print "^^^^^^initial step in process: subdivide volume"

subdEnvelope = subdivideEnvelope ( baseEnvelope ( 0 ), randRotVals , randOffsetVals )

For k 0 To ubound ( subdEnvelope ) 'redefine baseEnvelope

ReDim Preserve baseEnvelope ( k )

baseEnvelope ( k ) = subdEnvelope ( k ) Next

135 2 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
End If If IsEmpty ( progEnvelope ( 0 )) True And ubound ( baseEnvelope ) > 0 Then 'no program has been assigned yet

For k = 0 To ubound ( subdEnvelope ) 'redefine baseEnvelope

ReDim Preserve baseEnvelope ( k ) baseEnvelope ( k ) subdEnvelope ( k ) Next

End If

If IsEmpty ( progEnvelope ( 0 )) True And ubound ( baseEnvelope ) >

0 Then 'no program has been assigned yet

rhino Print "^^^^^^first step in process: selecting volume"

rhino Print "@_@_@_ubound for baseEnv: " & ubound ( baseEnvelope )

selectEnvelope determineVolume ( baseEnvelope , progAmount ) 'only moment at which selectEnvelope is used to determine fit volume

rhino . ObjectColor baseEnvelope ( selectEnvelope ), progColor 'assign program

xVal rhino CurveStartPoint ( progLines ( i ))( 0 ) 'create program graph line

yVal = rhino CurveStartPoint ( progLines ( i ))( 1 ) + rhino

SurfaceVolumeCentroid ( baseEnvelope ( selectEnvelope ))( 0 )( 2 )

xVal2 = xVal + (( rhino SurfaceVolume ( baseEnvelope ( selectEnvelope ))( 0 )/( progPercents ( i ) * progAllVolume )) * rhino

CurveLength ( progLines ( i )))

yValTotal rhino SurfaceVolumeCentroid ( baseEnvelope ( selectEnvelope ))( 0 )( 2 )

ReDim Preserve progGraphLine ( m )

progGraphLine ( m ) = rhino AddLine ( array ( xVal , yVal , 0 ), array ( xVal2 , yVal , 0 ))

rhino ObjectColor progGraphLine ( m ), progColor

ReDim Preserve progGraphAvg ( i )

progGraphAvg ( i ) = rhino AddLine ( array ( xVal , yVal , 0 ), array ( xVal + rhino . CurveLength ( progLines ( i )), yVal , 0 ))

rhino ObjectColor progGraphAvg ( i ), progColor

ReDim Preserve progEnvelope ( m ) 'create program

collection

progEnvelope ( m ) baseEnvelope ( selectEnvelope )

progAmount = progAmount - rhino SurfaceVolume ( progEnvelope ( m ))( 0 ) 'reduce program amount

rhino Print "~~~~~item: " & i & "step: " & m & "program

total: " & (( progPercents ( i )) * progAllVolume )

rhino Print "~~~~~item: " & i & "step: " & m & "program

deployed: " & rhino SurfaceVolume ( progEnvelope ( m ))( 0 )

rhino Print "~~~~~item: " & i & "step: " & m & "program

remaining: " & progAmount

rhino Print "~~~~~item: " & i & "step: " & m & "program

cutoff: " & (( progPercents ( i )) * progAllVolume ) * 0.05 m m + 1

rhino Print "&&&&&baseEnvelope ubound before: " & ubound ( baseEnvelope )

o 0

For n 0 To ubound ( baseEnvelope ) 'reduce baseEnvelope set, removing the bit that has been programmed If n <> selectEnvelope Then ReDim Preserve reducedEnvelope ( o ) reducedEnvelope ( o ) = baseEnvelope ( n ) o o + 1

End If

Next

For r = 0 To ubound ( reducedEnvelope ) 'redefine baseEnvelope and re-run the process ReDim Preserve baseEnvelope ( r ) baseEnvelope ( r ) reducedEnvelope ( r )

Next

rhino Print "&&&&&baseEnvelope ubound AFTER: " & ubound ( baseEnvelope )

End If

'//////////recursive steps to deploy program

Do While progAmount > (( progPercents ( i )) * progAllVolume ) * 0.05

nearEnvelope determineNearest ( baseEnvelope , progEnvelope , progAmount , progPercents ( i ) * progAllVolume ) 'find nearest envelope

appendix A: rhino scripts 136 3 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 ,
)
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
If rhino . SurfaceVolume ( baseEnvelope ( nearEnvelope ))( 0 ) > progAmount Then 'this means that volume is too big to fit program rhino Print "^^^^^^second step in process: nearest volume is not proper size. need to subdivide"

nearEnvelope = determineNearest ( baseEnvelope , progEnvelope , progAmount , progPercents ( i ) * progAllVolume ) 'find nearest envelope

If rhino SurfaceVolume ( baseEnvelope ( nearEnvelope ))( 0 ) > progAmount Then 'this means that volume is too big to fit program

rhino . Print "^^^^^^second step in process: nearest volume is not proper size. need to subdivide"

rhino Print "$$$$near envelope to subdivide: " & nearEnvelope & " volume: " & rhino SurfaceVolume ( baseEnvelope ( nearEnvelope ))( 0 )

rhino Print "#^#^#^#baseEnv before subdivision: " & ubound ( baseEnvelope )

subdEnvelope = subdivideEnvelope ( baseEnvelope ( nearEnvelope ), randRotVals , randOffsetVals )

rhino Print "_*_*_*_* ubound right after subdivide

for subdEnvelope: " & ubound ( subdEnvelope )

rhino Print "X*X*X*X*X ubound for baseEnvelope ( including nearest): " & ubound ( baseEnvelope )

o 0

If ubound ( baseEnvelope ) 0 Then

For n = 0 To ubound ( subdenvelope ) ReDim Preserve baseEnvelope ( n ) baseEnvelope ( n ) = subdEnvelope ( n )

Next

rhino Print ":P:P:P:P:P: baseEnv was zero, new ubound is: " & ubound ( baseEnvelope ) Else

For n = 0 To ubound ( baseEnvelope ) 'reduce baseEnvelope set, removing the bit that has been subdivided If n <> nearEnvelope Then

ReDim Preserve reducedEnvelope ( o ) reducedEnvelope ( o ) baseEnvelope ( n ) o = o + 1

End If

Next

rhino Print "+|+|||++|+|+|+|ubound for baseEnv after nearest is removed: " & ubound ( reducedEnvelope )

For q 0 To ubound ( reducedEnvelope ) 'redefine baseEnvelope

ReDim Preserve baseEnvelope ( q ) baseEnvelope ( q ) = reducedEnvelope ( q )

Next

rhino Print "+}+}+}+}+}+ubound for recreated baseEnv: " & ubound ( baseEnvelope )

For k = 0 To ubound ( subdEnvelope ) 'add subd blocks on the end of baseEnvelope ReDim Preserve baseEnvelope ( k + ubound ( reducedEnvelope ) + 1 )

= subdEnvelope ( k )

baseEnvelope ( k + ubound ( reducedEnvelope ) + 1 )

Next End If

rhino Print "=================ubound for baseEnvelope (including subd): " & ubound ( baseEnvelope )

Else 'assign program, reduce set, reduce program rhino Print "^^^^^^second step in process: assign program to nearest volume" rhino ObjectColor baseEnvelope ( nearEnvelope ), progColor 'assign program

xVal rhino CurveEndPoint ( progGraphLine ( m - 1 ))( 0 ) ' create program graph line

yVal = rhino CurveStartPoint ( progLines ( i ))( 1 ) + rhino . SurfaceVolumeCentroid ( baseEnvelope ( nearEnvelope ))( 0 )( 2 )

xVal2 = xVal + (( rhino SurfaceVolume ( baseEnvelope ( nearEnvelope ))( 0 )/( progPercents ( i ) * progAllVolume )) * rhino CurveLength ( progLines ( i )))

ReDim Preserve progGraphLine ( m )

progGraphLine ( m ) = rhino AddLine ( array ( xVal , yVal , 0 ), array ( xVal2 , yVal , 0 ))

rhino ObjectColor progGraphLine ( m ), progColor

yValTotal = yValTotal + rhino SurfaceVolumeCentroid ( baseEnvelope ( nearEnvelope ))( 0 )( 2 )

yValAvg ( yValTotal / ( m + 1 )) + rhino

CurveStartPoint ( progLines ( i ))( 1 )

rhino Print "(((((local Z value for " & m + 1 & " " & rhino . SurfaceVolumeCentroid ( baseEnvelope ( nearEnvelope ))( 0 )( 2 ) & " y value: " & yVal & " total: " & yValTotal & " avg: " & yValAvg

rhino DeleteObject progGraphAvg ( i )

progGraphAvg ( i ) rhino AddLine ( array ( rhino

CurveStartPoint ( progLines ( i ))( 0 ), yValAvg , 0 ), array ( rhino CurveEndPoint ( progLines ( i ))( 0 ), yValAvg , 0 ))

rhino ObjectColor progGraphAvg ( i ), progColor

ReDim Preserve progEnvelope ( m ) 'add to program

137 4 174 175 176 177 178 179 180 181 182 progAmount (( progPercents ( )) progAllVolume ) 0.05
5 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
225 226 227 228 229 230 231 232

( progLines ( ))( ) rhino . Print "(((((local Z value for " & m + 1 & " " & rhino SurfaceVolumeCentroid ( baseEnvelope ( nearEnvelope ))( 0 )( 2 ) & " y

value: " & yVal & " total: " & yValTotal & " avg: " & yValAvg

rhino DeleteObject progGraphAvg ( i )

progGraphAvg ( i ) = rhino AddLine ( array ( rhino

CurveStartPoint ( progLines ( i ))( 0 ), yValAvg , 0 ), array ( rhino CurveEndPoint ( progLines ( i ))( 0 ), yValAvg , 0 ))

rhino ObjectColor progGraphAvg ( i ), progColor

ReDim Preserve progEnvelope ( m ) 'add to program collection

progEnvelope ( m ) = baseEnvelope ( nearEnvelope )

progAmount = progAmount - rhino . SurfaceVolume ( progEnvelope ( m ))( 0 ) 'reduce program amount

rhino Print "~~~~~item: " & i & "step: " & m & "

program total: " & (( progPercents ( i )) * progAllVolume )

rhino Print "~~~~~item: " & i & "step: " & m & " program deployed: " & rhino SurfaceVolume ( progEnvelope ( m ))( 0 )

rhino . Print "~~~~~item: " & i & "step: " & m & " program remaining: " & progAmount

rhino Print "~~~~~item: " & i & "step: " & m & " program cutoff: " & (( progPercents ( i )) * progAllVolume ) * 0.05

m = m + 1

o = 0

For n = 0 To ubound ( baseEnvelope ) 'reduce baseEnvelope set, removing the bit that has been programmed If n <> nearEnvelope Then

ReDim Preserve reducedEnvelope ( o ) reducedEnvelope ( o ) = baseEnvelope ( n ) o = o + 1

End If

Next

For q 0 To ubound ( reducedEnvelope ) 'redefine baseEnvelope and re-run the process

ReDim Preserve baseEnvelope ( q ) baseEnvelope ( q ) = reducedEnvelope ( q )

Next

rhino print "++++ubound for reducedEnvelope: " & ubound ( baseEnvelope )

End If Loop Loop

rhino Print "~~~~~item: " & i & "program total: " & (( progPercents ( i )) * progAllVolume )

rhino . Print "~~~~~item: " & i & "program remaining: " & progAmount rhino Print "~~~~~item: " & i & "program cutoff: " & (( progPercents ( i )) * progAllVolume ) * 0.05

Next

If ubound ( baseEnvelope ) > 0 Or ubound ( baseEnvelope ) = 0 Then

For s 0 To ubound ( baseEnvelope ) 'change color of remaining boxes to white rhino ObjectColor baseEnvelope ( s ), RGB ( 255 , 255 , 255 )

Sub Function programPercents ( ByVal progLns ) Dim i , j , progPrcnts (), progAll progAll = 0

For j 0 To ubound ( progLns ) progAll = progAll + rhino CurveLength ( progLns ( j ))

rhino Print "curvelength: " & rhino CurveLength ( progLns ( j )) Next

rhino Print "program length: " & progAll

For i = 0 To ubound ( progLns )

ReDim Preserve progPrcnts ( i ) progPrcnts ( i ) = rhino . CurveLength ( progLns ( i ))/ progAll

rhino Print "program part: " & i & " percent: " & progPrcnts ( i )

* 100 & "%"

programPercents = progPrcnts

determineVolume ( ByVal baseEnv , ByVal progAmnt )

volDifference , selectEnv , tempVol , tempDist , minDist , nearestEnvelope , n , o , p

appendix A: rhino scripts 138 6 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299
Next End
Next
If
End
End
Function
Dim
Next
Function

Function determineVolume ( ByVal baseEnv , ByVal progAmnt )

Dim volDifference , selectEnv , tempVol , tempDist , minDist , nearestEnvelope , n , o , p p = 0

minDist 500000000 volDifference 500000000 For n = 0 To ubound ( baseEnv )

If IsNull ( rhino SurfaceVolumeCentroid ( baseEnv ( n ))) Then rhino Print " R%R%R%R% during nearest, null volume is: " & n rhino CopyObject baseEnv ( n ), array ( 0 , 0 , 0 ), array ( 30 , 0 , 0 ) End If

rhino Print ",z,z,z,z,z determine volume step: " & n & " " & rhino SurfaceVolume ( baseEnv ( n ))( 0 )

tempVol rhino SurfaceVolume ( baseEnv ( n ))( 0 ) 'type mismatch!! 'rhino.Print "envelope: " & n & ", tempVol: " & tempVol & ", difference: " & progAmnt - tempVol

If volDifference > ( progAmnt - tempVol ) And ( progAmnt - tempVol ) > 0 Then volDifference progAmnt - tempVol selectEnv n End If

Next determineVolume = selectEnv

rhino print "selectEnvelope: " & selectEnv End Function

Function determineNearest ( ByVal baseEnv , ByVal progEnv , ByVal progCurrent , ByVal progTotal )

Dim tempDist , nearestEnv , minDist , p , q , r , xVal , yVal , zVal minDist = 500000000 xVal = 0 yVal = 0 zVal 0

rhino Print "``````during nearest search, ubound for program: " & ubound ( progEnv )

rhino . Print "~~~~~~during nearest search, ubound for baseEnv: " & ubound ( baseEnv )

If ubound ( progEnv ) 0 And progCurrent progTotal Then

For p 0 To Ubound ( baseEnv ) tempDist = rhino Distance ( rhino SurfaceVolumeCentroid ( baseEnv ( p ))( 0 ), rhino SurfaceVolumeCentroid ( progEnv ( 0 ))( 0 )) 'type

mismatch

If minDist > tempDist Then minDist tempDist nearestEnv p

End If Next

Else

For q = 0 To ubound ( progEnv ) 'find centroid of multiple program envelopes

xVal rhino SurfaceVolumeCentroid ( progEnv ( q ))( 0 )( 0 ) + xVal

yVal = rhino SurfaceVolumeCentroid ( progEnv ( q ))( 0 )( 1 ) + yVal

zVal = rhino SurfaceVolumeCentroid ( progEnv ( q ))( 0 )( 2 ) + zVal

Next

For r = 0 To Ubound ( baseEnv )

'rhino.Print "****object: " & r & " " & baseEnv(r)

'rhino.Print ",,,,,step in finding nearest: " & r

If IsNull ( rhino SurfaceVolumeCentroid ( baseEnv ( r ))) Then rhino . Print "________________________________________&*&* &* during nearest, null volume is: " & r

'rhino.CopyObject baseEnv(r),array(0,0,0),array(30,0,0)

Else

tempDist = rhino Distance ( rhino SurfaceVolumeCentroid ( baseEnv ( r ))( 0 ), array ( xVal /( ubound ( progEnv )+ 1 ), yVal /( ubound ( progEnv )+ 1 ), zVal /( ubound ( progEnv )+ 1 )))

'type mismatch in previous step, happens right after subdiv., reducedEnv has fallen to ZERO, but more prog needs to be filled

If minDist > tempDist Then minDist = tempDist nearestEnv = r

139 7 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 Next
programPercents = progPrcnts End Function
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367

tempDist = rhino Distance ( rhino SurfaceVolumeCentroid ( baseEnv ( r ))( 0 ), array ( xVal /( ubound ( progEnv )+ 1 ), yVal /( ubound ( progEnv )+ 1 ), zVal /( ubound ( progEnv )+ 1 ))) 'type mismatch in previous step, happens right after subdiv., reducedEnv has fallen to ZERO, but more prog needs to be filled If minDist > tempDist Then minDist = tempDist nearestEnv = r

determineNearest = nearestEnv rhino . Print "><><><new nearest envelope: " & determineNearest

Function Function subdivideEnvelope ( ByVal baseEnv , ByVal rotVals , ByVal offsetMultVals )

Dim macroCap macroCap "-_Cap"

macroShrinkTrim macroShrinkTrim = "-_ShrinkTrimmedSrf"

Dim cutSurfs , cutSurfDomU , cutSurfDomV , centerPt , tempPt , tempPtx , tempPty , xVector , yVector , offsetSurfs (), splitBaseEnv , baseEnvTmp , subEnvelope (), firstSplitEnv , fixEnv

cutSurfs rhino ExplodePolysurfaces ( baseEnv , False ) centerPt = rhino SurfaceVolumeCentroid ( baseEnv )

For i = 0 To UBound ( cutSurfs )

rhino SelectObject cutsurfs ( i ) 'in later generations, the trimming from earlier subdividing causes errors in finding the centroid of the surface rhino Command macroShrinkTrim

rhino . UnselectAllObjects

cutSurfDomU rhino SurfaceDomain ( cutSurfs ( i ), 0 ) 'locate centroid of surface. when used with centerPt, it creates vector for offseting the surface. this method does NOT work universally

cutSurfDomV = rhino SurfaceDomain ( cutSurfs ( i ), 1 )

tempPt = rhino . EvaluateSurface ( cutSurfs ( i ), array ( cutSurfDomU ( 1 )( Abs (( cutSurfDomU ( 1 )- cutSurfDomU ( 0 ))*. 5 )), cutSurfDomV ( 1 ) - ( Abs (( cutSurfDomV ( 1 )- cutSurfDomV ( 0 ))*. 5 )))) rhino AddPoint tempPt

tempPtX = rhino EvaluateSurface ( cutSurfs ( i ), array ( cutSurfDomU ( 0 ) , cutSurfDomV ( 1 ) - ( Abs (( cutSurfDomV ( 1 )- cutSurfDomV ( 0 ))*. 5 ))))

tempPtY = rhino . EvaluateSurface ( cutSurfs ( i ), array ( cutSurfDomU ( 1 )

-( Abs (( cutSurfDomU ( 1 )- cutSurfDomU ( 0 ))*. 5 )), cutSurfDomV ( 0 ))) xVector rhino VectorCreate ( tempPt , tempPtX ) yVector rhino VectorCreate ( tempPt , tempPtY )

ReDim Preserve offsetSurfs ( i ) 'create splitter surface, locate within envelope using random offsetSurfs ( i ) = rhino ScaleObject ( cutSurfs ( i ), tempPt , array ( 4. 0 , 4.0 , 4.0 ))

rhino RotateObject offsetSurfs ( i ), tempPt , rotVals ( n ), yVector

If n = Ubound ( rotVals ) Then 'step to next rotation value - if the last value in the array was used then reset back to the first value n = 0

Else n n + 1

End If

rhino . MoveObject offsetSurfs ( i ), tempPt , array ( tempPt ( 0 ) + (

offsetMultVals ( p ) * ( 2 * ( centerPt ( 0 )( 0 ) - tempPt ( 0 )))), tempPt ( 1 ) + (

offsetMultVals ( p ) * ( 2 * ( centerPt ( 0 )( 1 ) - tempPt ( 1 )))), tempPt ( 2 ) + (

offsetMultVals ( p ) * ( 2 * ( centerPt ( 0 )( 2 ) - tempPt ( 2 )))))

If p = Ubound ( offsetMultVals ) Then 'step to next multiplier value - if the last value in the array was used then reset back to the first value p 0

appendix A: rhino scripts 140 8 361 362 363 364 365 366 367 368 369 'rhino.CopyObject baseEnv(r),array(0,0,0),array(30,0,0) Else
End
End If 9 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 Next End If
If
End
Dim
Dim i , j , k , m ,
, p , q j = 0 k = 0 n = 0 p = 0
n
417 418 419 420 421 422 423 424 425 426 427 428 429 430
Else p = p
1
+
End If

If p Ubound ( offsetMultVals ) Then 'step to next multiplier value - if the last value in the array was used then reset back to the first value p

m = 0 'this is an independent counter for collecting the split elements - see line 76-82

If i 0 Or IsNull ( firstSplitEnv ) True Then 'begin slicing. first 'if' test is necessary because you are starting with a string. after first slice, baseEnvelope is always an array

rhino Print "___i: " & i

baseEnvTmp = rhino CopyObject ( baseEnv )

firstSplitEnv rhino SplitBrep ( baseEnvTmp , offsetSurfs ( i ), False ) 'string required

If IsNull ( firstSplitEnv ) = True Then rhino . DeleteObject baseEnvTmp 'rhino.DeleteObject firstSplitEnv 'sometimes this is a string, sometimes it is an array

Else

rhino ObjectColor firstSplitEnv ( 0 ), RGB ( 255 -(( i * 3 )+( k * 3 )), 255 -(( i * 2 )+( k * 3 )), 255 -(( i * 3 )+( k * 3 ))) 'type mismatch

rhino ObjectColor firstSplitEnv ( 1 ), RGB ( 255 -(( i * 3 )+( k * 3 )), 255 -(( i * 2 )+( k * 3 )), 255 -(( i * 3 )+( k * 3 )))

rhino SelectObject firstSplitEnv ( 0 ) rhino Command macroShrinkTrim rhino Command macroCap 'only way to cap the solids is to call the command outside the script rhino UnselectAllObjects rhino . SelectObject firstSplitEnv ( 1 ) rhino Command macroShrinkTrim

rhino Command macroCap rhino UnselectAllObjects

Call rhino CapPlanarHoles ( firstSplitEnv ( 0 )) Call rhino CapPlanarHoles ( firstSplitEnv ( 1 )) rhino . DeleteObject baseEnvTmp baseEnvTmp = firstSplitEnv

End If

Else

For k = 0 To Ubound ( baseEnvTmp ) 'type mismatch for ubound rhino . Print "___i: " & i

splitBaseEnv rhino SplitBrep ( baseEnvTmp ( k ), offsetSurfs ( i ), False )

If IsNull ( splitBaseEnv ) Then 'check if envelope and surface intersect ReDim Preserve subEnvelope ( m ) 'put block back into envelope array for cutting in the next round subEnvelope ( m ) baseEnvTmp ( k ) m = m + 1

Else

If ubound ( splitBaseEnv )> 1 Then ' ****** POTENTIAL PROBLEM - when slicing through area that produces more than 2 seperate entities rhino print "..............after splitting more than two object were generated: " & ubound ( splitBaseEnv )

'Dim getsomething

''

'getsomething rhino.GetObject( "stopping script")

End If

rhino SelectObject splitBaseEnv ( 0 )

rhino Command macroCap

rhino UnselectAllObjects

Call rhino CapPlanarHoles ( splitBaseEnv ( 0 ))

rhino . SelectObject splitBaseEnv ( 1 )

rhino Command macroCap

rhino UnselectAllObjects

Call rhino CapPlanarHoles ( splitBaseEnv ( 1 ))

'If IsNull(rhino.SurfaceVolume(splitBaseEnv(0))) Then 'fixEnv = rebuildEdges(splitBaseEnv(0))

'splitBaseEnv(0) fixEnv 'rhino.Print

splitBaseEnv(0))(0)

141 10 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 ( p ) ( ( ( )( ) tempPt ( )))), tempPt ( ) ( offsetMultVals ( p ) * ( 2 * ( centerPt ( 0 )( 1 ) - tempPt ( 1 )))), tempPt ( 2 ) + ( offsetMultVals ( p ) * ( 2 * ( centerPt ( 0 )( 2 ) - tempPt ( 2 )))))
= 0 Else
p +
End
p
1
If
463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495
"!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!
rebuilt, confirm volume:" & rhino.SurfaceVolume(
envelope edges were

rhino UnselectAllObjects

Call rhino CapPlanarHoles ( splitBaseEnv ( 1 ))

'If IsNull(rhino.SurfaceVolume(splitBaseEnv(0))) Then 'fixEnv = rebuildEdges(splitBaseEnv(0))

'splitBaseEnv(0) fixEnv

'rhino.Print "!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O! envelope edges were rebuilt, confirm volume:" & rhino.SurfaceVolume( splitBaseEnv(0))(0)

' End If

' If IsNull(rhino.SurfaceVolume(splitBaseEnv(1))) Then

'fixEnv rebuildEdges(splitBaseEnv(1))

'splitBaseEnv(1) = fixEnv

' rhino.Print "!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O! O!O!envelope edges were rebuilt, confirm volume:" & rhino.SurfaceVolume( splitBaseEnv(1))(0)

' End If

rhino ObjectColor splitBaseEnv ( 0 ), RGB ( 255 -(( i * 3 )+( k *

3 )), 255 -(( i * 2 )+( k * 3 )), 255 -(( i * 3 )+( k * 3 )))

rhino . ObjectColor splitBaseEnv ( 1 ), RGB ( 255 -(( i * 3 )+( k *

3 )), 255 -(( i * 2 )+( k * 3 )), 255 -(( i * 3 )+( k * 3 )))

ReDim Preserve subEnvelope ( m + 1 ) 'distribute 2 split volumes into larger array

subEnvelope ( m ) splitBaseEnv ( 0 ) subEnvelope ( m + 1 ) = splitBaseEnv ( 1 )

'rhino.Print ":::sub_" & Ubound(subEnvelope) rhino DeleteObject baseEnvTmp ( k ) m m + 2

End If

Next baseEnvTmp = subEnvelope 'establish new baseEnvelope to split using next 'i' split surface

End If

Next rhino DeleteObjects offsetSurfs

For q = 0 To Ubound ( subEnvelope )

If IsNull ( rhino . SurfaceVolume ( subEnvelope ( q ))) Then 'fixEnv = rebuildEdges(splitBaseEnv(0)) 'splitBaseEnv(0) fixEnv

rhino Print "!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!O!envelope edges were rebuilt, confirm volume: " & q

End If

Next

subdivideEnvelope subEnvelope

rhino Print "##### ubound right after subdivision function: " & ubound ( subEnvelope ) & " " & ubound ( subdivideEnvelope )

rhino . DeleteObject baseEnv

End Function

Function rebuildEdges ( ByVal envelope )

Dim macroRebuildEdges macroRebuildEdges = "-_RebuildEdges .00001"

Dim macroCap macroCap "-_Cap"

Dim macroJoin macroJoin = "-_Join"

Call rhino CapPlanarHoles ( envelope )

Dim tempSurfs , newEnv tempSurfs = rhino ExplodePolysurfaces ( envelope , True )

'rhino.CopyObjects tempsurfs,array(0,0,0),array(40,0,0)

rhino SelectObjects tempSurfs

rhino Command macroRebuildEdges

'rhino.Command macroJoin

rhino UnselectAllObjects

appendix A: rhino scripts 142 11 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507
12 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564

newEnv = rhino JoinSurfaces ( tempSurfs , True )

'rhino.DeleteObjects tempSurfs

'Call rhino.CapPlanarHoles(newEnv)

If isnull ( newEnv ) Then rhino Print " NULL"

End If rhino . Print "|?|?|?|?new repaired volume: " & newEnv

'rhino.SelectObject newEnv

'rhino.Command macroCap

'rhino.UnselectAllObjects

'Call rhino.CapPlanarHoles(newEnv)

rebuildEdges = newEnv

End Function

Function popOffset ( ByVal env , ByVal lines )

Dim dist , i , boundbox dist = 0

For i 0 To ubound ( lines ) dist dist + rhino CurveLength ( lines ( i ))

Next

boundbox = rhino . BoundingBox ( env )

dist = dist + rhino Distance ( boundbox ( 0 ), boundbox ( 1 ))

dist dist * 2 dist ( CLng ( dist * 0.01 )) * 100

popOffset = dist

rhino Print "££££££££ offset distance: " & popOffset

End Function

Function varyProgInput ( ByVal progElements )

Dim tempUnits , eNumTotal , arrStart , pUnit (), rList , newProgElements () , tempElement

Dim i , j , k

eNumTotal - 1 k = 0

'determine number of total UNITS and rebuild as individual 100cm lines

For i 0 To ubound ( progElements )

tempUnits rhino CurveLength ( progElements ( i ))/ 100

For j = 0 To tempUnits - 1

eNumTotal = eNumTotal + 1

ReDim Preserve pUnit ( eNumTotal )

arrStart = array ( rhino CurveStartPoint ( progElements ( 0 ))( 0 ), rhino CurveStartPoint ( progElements ( 0 ))( 1 ), rhino CurveStartPoint ( progElements ( 0 ))( 2 ))

pUnit ( eNumTotal ) = rhino AddLine ( arrStart , array ( rhino

CurveStartPoint ( progElements ( 0 ))( 0 ) + 100 , rhino CurveStartPoint ( progElements ( 0 ))( 1 ), rhino . CurveStartPoint ( progElements ( 0 ))( 2 )))

rhino ObjectColor pUnit ( eNumTotal ), rhino ObjectColor ( progElements ( i ))

rhino ObjectPrintColor pUnit ( eNumTotal ), rhino ObjectColor ( progElements ( i ))

rhino . ObjectPrintWidth pUnit ( eNumTotal ), 1.00 Next Next

'generate RANDOMLY

143 13 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617
618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638
UNIQUE ORDER for program UNITS For i 0 To ubound ( pUnit ) Call rhino MoveObject ( pUnit ( rList ( i )), array ( 0 , 0 , 0 ), array ( i * 100 , 0 , 0 )) Next 'join NEIGHBORING UNITS of
type For i = 1 To ubound ( pUnit ) If i 1 Then If rhino ObjectColor ( pUnit ( rList ( i ))) rhino ObjectColor ( pUnit ( rList ( i - 1 ))) Then ReDim Preserve newProgElements ( k ) newProgElements ( k ) = rhino . AddLine ( rhino . CurveStartPoint ( pUnit ( rList ( i - 1 ))), rhino CurveEndPoint ( pUnit ( rList ( i )))) rhino ObjectColor newProgElements ( k ), rhino ObjectColor ( pUnit ( rList ( i ))) rhino ObjectPrintColor newProgElements ( k ), rhino 12 559 560 561 562 563 564 'rhino.CopyObjects tempsurfs,array(0,0,0),array(40,0,0)
ORDERED LIST of numbers rList = randomList ( pUnit ) 'develop
same program
tempSurfs
rhino SelectObjects
macroJoin
UnselectAllObjects
rhino Command macroRebuildEdges 'rhino.Command
rhino .

If rhino ObjectColor ( pUnit ( rList ( i ))) = rhino

ReDim Preserve newProgElements ( k )

newProgElements ( k ) rhino AddLine ( rhino CurveStartPoint ( pUnit ( rList ( i - 1 ))), rhino CurveEndPoint ( pUnit ( rList ( i ))))

rhino . ObjectColor newProgElements ( k ), rhino . ObjectColor (

pUnit ( rList ( i )))

rhino

ObjectPrintColor newProgElements ( k ), rhino

ObjectColor ( pUnit ( rList ( i )))

rhino

Else

ObjectPrintWidth newProgElements ( k ), 2.00

k = k + 1

ReDim Preserve newProgElements ( k )

newProgElements ( k ) = rhino AddLine ( rhino CurveStartPoint (

pUnit ( rList ( i - 1 ))), rhino CurveEndPoint ( pUnit ( rList ( i - 1 ))))

rhino

ObjectColor newProgElements ( k ), rhino ObjectColor ( pUnit ( rList ( i - 1 )))

rhino ObjectPrintColor newProgElements ( k ), rhino

ObjectColor ( pUnit ( rList ( i - 1 )))

rhino

ObjectPrintWidth newProgElements ( k ), 2.00

k k + 1

ReDim Preserve newProgElements ( k )

newProgElements ( k ) = rhino AddLine ( rhino CurveStartPoint (

pUnit ( rList ( i ))), rhino CurveEndPoint ( pUnit ( rList ( i ))))

rhino . ObjectColor newProgElements ( k ), rhino . ObjectColor ( pUnit ( rList ( i )))

rhino

ObjectPrintColor newProgElements ( k ), rhino

ObjectColor ( pUnit ( rList ( i )))

rhino

ObjectPrintWidth newProgElements ( k ), 2.00

k = k + 1

End If Else

If rhino ObjectColor ( pUnit ( rList ( i ))) rhino ObjectColor ( newProgElements ( k - 1 )) Then tempElement = rhino AddLine ( rhino CurveStartPoint ( newProgElements ( k - 1 )), rhino . CurveEndPoint ( pUnit ( rList ( i ))))

rhino DeleteObject newProgElements ( k - 1 )

newProgElements ( k - 1 ) tempElement rhino ObjectColor newProgElements ( k - 1 ), rhino ObjectColor ( pUnit ( rList ( i ))) rhino ObjectPrintColor newProgElements ( k - 1 ), rhino

ObjectColor ( pUnit ( rList ( i )))

rhino ObjectPrintWidth newProgElements ( k - 1 ), 2.00

Else ReDim Preserve newProgElements ( k ) newProgElements ( k ) = rhino AddLine ( rhino CurveStartPoint ( pUnit ( rList ( i ))), rhino . CurveEndPoint ( pUnit ( rList ( i ))))

rhino ObjectColor newProgElements ( k ), rhino ObjectColor ( pUnit ( rList ( i )))

rhino ObjectPrintColor newProgElements ( k ), rhino

ObjectColor ( pUnit ( rList ( i )))

rhino ObjectPrintWidth newProgElements ( k ), 2.00

k = k + 1

End If

End If

Next

rhino DeleteObjects pUnit

rhino . Print "number of program Elements: " & ubound ( newProgElements )+

1

varyProgInput newProgElements

End Function

Function randomList ( ByVal pointList )

Dim i , j , tempNum , numList (), randSeed

i = 0

rhino Print "bound" & ubound ( pointlist )

randSeed = CInt ( Rnd * 1000 )

Rnd ( 23 *- 1 )

Randomize ( randSeed )

Do While i < ( Ubound ( pointList ) + 1 )

tempNum Int (( ubound ( pointList ) - 0 + 1 ) * Rnd + 0 )

If i > 0 Then

For j = 1 To i

If tempNum = numlist ( j - 1 ) Then

rhino . Print i & "_" & ( tempnum & "_repeat" )

tempNum = "x" Exit For Else

ReDim Preserve numlist ( i )

appendix A: rhino scripts 144 14 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 'join program type For i = 1 To ubound ( pUnit ) If i = 1 Then
ObjectColor
pUnit
))) Then
(
( rList ( i - 1
663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705

Preserve numList ( i )

( i )= tempnum

145 15 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 tempNum = Int (( ubound ( pointList ) - 0 + 1 ) * Rnd + 0 ) If i > 0 Then For j 1 To i If tempNum numlist ( j - 1 ) Then rhino Print i & "_" & ( tempnum & "_repeat" ) tempNum = "x" Exit For Else
numlist
End If Next If tempNum "x" Then Else rhino Print i &
& tempnum i = i + 1 End If 16 718 719 720 721 722 723 724 725 726 727 728 729 730 Else ReDim
numlist
rhino
i = i + 1 End If Loop rhino . Print
randomList = numList End Function
ReDim Preserve numlist ( i )
( i )= tempnum
"_"
. Print i & "_" & tempnum
"_______seed: " & randSeed

5.2 Processing Scripts

146
147
appendix A: processing scripts 148
149
appendix A: processing scripts 150
151
appendix A: processing scripts 152
153
appendix A: processing scripts 154
155
appendix A: processing scripts 156
157

5.3 Work Map

ABSTRACT

1 PRECEDENTS & PRIMARY RESEARCH

1.1 Precedents

1.1.1 Physical Form-Finding

1.1.2 Computational Form-Finding Engineering-Based Software for Form-Finding Software Using Spring-Based Solvers

1.1.3 Articulation of Computational Form through Fate Map

1.1.4 Cable Nets as Space-Making Devices

1.2 Computational Networks

1.2.1 Network and Geometric Topology

1.2.2 Spring-Based Particles Systems

1.2.3 Springs in Processing Hooke’s Law

1.2.4 Cylindrical Net Topology

2 EXPERIMENTS & DEVELOPMENT

2.1 Embedded Fabrication

2.1.1 Cylindrical Transformations

2.1.2 Mapping of Computational Cylindrical Net

2.1.3 Data Mining for Fabrication through Node ID

2.1.4 Spatial Articulation of Net

2.1.5 Evaluating Cable Net Installation

2.2 Topologically Defined Net Components

2.2.1 Component Systems for Form-Found Structures

2.2.2 Subdivision Algorithm for Cellular Framework

2.2.3 Single Cell Net Parameters

2.2.4 Multiplication and Association of Net Components Hierarchies and Meta-Spring

2.2.5 Evaluating Cab le Net Installation

2.3Threshold Conditions

2.3.1 Comparing Actual Density and Perceived Density

2.3.2 Computational Threshold Analysis

2.3.3 Extended Vector-Based Analyses

3 APPLICATION & OUTLOOK

3.1 Contextual Inputs

3.1.1 In-Situ: Turbine Hall of Tate Modern

3.1.2 Comparison to Marsyas Installation

3.2 Conclusion

3.2.1 Elemental Processes

3.2.2 Architectural Emergence

3.2.3 Embedded Feedback

3.3 Outlook

3.3.1 Translations to Material and Fabrication

3.3.2 Parametric Dimensioning of Nodes and Vectors

Sean Ahlquist

Moritz Fleischmann

158
=
M =
sM M S SM SM sM sM SM SM SM Sm SM Sm SM S Sm S sM M M Sm SM SM SM SM SM SM
S
159
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.