Archive for …/…

Patrik Schumacher on Art &/vs Architecture

Extract from Patrik Schumacher (Zaha Hadid Architects) recent argumentation published on Face Book that followed the release of Architecture Biennale program:

Once more on the distinction and relation between art and architecture:

Historically painting, sculpture and architecture were a continuous practice engaged in by the same protagonists (Michelangelo, Rafael, Bernini etc.) for a unified purpose. Why am I insisting on the sharp distinction of contemporary art and architecture? In order to allow us to see the radically new arena of discourse-practice that is contemporary art as an utterly boundless, freewheeling platform of experimentation outside of all immediate instrumentality and thus necessarily without any responsibility … contemporary art is pure provocation, stimulation, confronting this world with possible other worlds. Architecture – like many other instrumental practices (technology, communication design, filmmaking, advertising, political activism) – like art’s stimulation and instrumentalize it as elements in their respective practices. The most creative protagonists of these disciplines might even temporarily enter the art-arena to fund and show their experimental work in its early not yet functional state. Avant-garde architects do this too – e.g. we have done this via experimental installations, Marc Fornes is another of many examples, in fact nearly all avant-garde architects use the art world in this way. These works are art-works within the art-world as long as they lack instrumentality. These works are works of architecture within our discipline as long as they point beyond themselves towards an architectural performance (instrumentality). The orientation of the respective discourses (which only overlap in these artefacts themselves as points of reference) is very different, the communicative chains diverge, the respective criteria of success (of art and architecture) pull in diametrically opposed directions. Works of architecture aim towards a framing role in everyday life, facilitating social purposes that are set by architecture’s clients/users rather than by the architects. (There is the odd one out: the projects of Francois Roche – an artist who mistakes himself as architect – are art rather than architectural designs, they are entirely intended as provocative statements, meant to function as contrarian comments on the world or upon an urban or institutional reality rather than constructing or contributing to an everyday reality. … Its great, stimulating (art-)work !!!)

The framing communications that architects provide are attributed to the host institutions that invite participants into their spaces and not to the architects.
However, there can be a stimulating architecture inserted into everyday life that offers moments of provocation subverting habits of seeing, moving, living. However, these provocations/subversions can only be partial, subsidiary moments within the performance of these respective architectures. They operate as mutating moments within the ongoing everyday instrumentality of the architecture. (They too will/must be attributed to the host institution rather than to the architect.) Although it makes sense to talk here about an artistic moment or potential within architecture, this does not transform this piece of architecture into a piece of contemporary art. Deconstructivism was meant to operate like this. We could also talk about moments of mutation, perturbation leading to innovation … art is pure stimulation, “professional” perturbation … architecture is at its best as transmuted and appropriated everyday instrumentality … the protagonists are also very different, a totally different cast of characters: Damien Hirst vs Richard Rogers, Moriko Mori vs Kazuyo Sejima etc. etc. (.. and … just to test this with respect to my categorization of Francois Roche’s work: in which line up does Francois Roche fit? …

(Francois, I hope you don’t take offence at my reflections on you as a “category mistake” … your work, disciplinary position and persona are theoretically very intriguing, the exception that confirms the rule, the paradigm case or exemplar that allows the demarcation problem to be made concrete and could be discussed with a degree of specificy … but that would be another post.)

Patrik Schumacher, March 2014

101020_MF @Boston | GSD Midterm review

Marc Fornes was kindly invited by Achim Menges for the midterm review of his studio at Harvard/GSD. As last year the studio presented an extensive and rigourus research on the properties of wood veneer (anisotropic and hygroscopic behaviour ) as the starting point for the development of 1/1 prototypic structures. Great work!

100616_MF Jury @REPEAT / TexFab

Marc Fornes has been invited by TexFab to be within the jury of REPEAT – a competition about Digital Fabrication.

The winning entry will be built , exhibited and subsequently given to the winner. The design and fabrication of the piece will be paid for in full by TEX-FAB and installed to coincide with the TEX-FAB exhibition REPEAT, in February. NO design fee will be paid. Estimated value of the winning entry is 10,000 USD.

Jury: Patrik Schumacher (head of jury), Marc Fornes, Lisa Iwamoto, Chris Lasch, Blair Satterfield

Many thanks to TexFab / Kevin Patrick McClellan, Andrew Vrana, Brad Bell

100604_TVMNY & Robot(s)

TVMNY having fun with robots @PSU… (many thanks to David Celento/PSU)

One robot has a potential – what about many robots?  (playing with 6 ABB 6 Axis)


(will be completed on the side column as confirmation & precision arrive):

– 2008.FALL: M.F. is co-teaching a design studio at GSAPP – Columbia University / New York, US (invitation: Francois Roche / R&Sie(n)) (one more webLog!!)

– 2008.FALL: M.F. is co-teaching this year cross-over studio 08/09 at die Angewandte – Universität für Angewandte Kunst Wien, Institut für Architektur / Vienna, AU (invitation: Francois Roche / R&Sie(n)) (and a last one!!!)

– 2008.09.18: M.F. lectures at the Rhino reseller meeting 2008 in Barcelona / Spain (invitation: Carlos Perez / McNeel)

– 2008.09.20: M.F. lectures at C.STEM 2008, Arte Generativa, Sistemi Elettronici e Software-art / Torino, Italy (invitation: Fabio Franchino)

– 2008.09.22-23: M.F runs a two days Rhinoscript workshop for McNeel Europe in Paris (invitation: Carlos Perez / McNeel)

– 2008.10.08-09-10: M.F. lectures at the “EleganTech” conference in Mexico City, Mexico (invitation: Gabriel Esquivel) – CANCEL!!!

– 2008.10.24-25: M.F. is the curator for the European section of the Architecture Beijing Biennale (present for the opening – October 24th) / Beijing, CHINA (invitation: Neil Leach)

Back from summer vacation after a long road trip crossing the US:
8500miles (13700 km) through 22 states, stopped in 21 cities, many national parks (Arches, Zion, Death Valley, Mojave, Grand Canyon,…), and much more “rencontres” and memories…

– (OHIO) > Cincinnati
– (INDIANA) > Indianapolis
– (KANSAS) > Kansas City
– (COLORADO) > Denver
– (UTAH) > Moab – Page – Hurricane
– (CALIFORNIA) > Mammoth Lake – SAN FRANCISCO – Santa Barbara – Palm Springs – Needles
– (ARIZONA) > Flagstaff
– (NEW MEXICO) > Albuquerque
– (TEXAS) > Amarillo – Dallas – Houston
– (TENNESSEE) > Nashville

for the record – fuel prices going from 3,24 (Houston, Texas) to 5.79 (Death Valley, California) per gallon…


Currently working in parallel on many projects/collaborations while being temporally delocated back and forth to Europe (currently in Paris) – here is a fast furious post to log on three future events I will be participating within the coming two weeks: MIND08 (New York), SIMAE (Barcelona), NODE08 (Barcelona)


– MIND08 Design and the Elastic Mind Symposium (New York)

Marc FORNES & SKYLAR TIBBITS will be giving a talk entitled “Partly surface”;

Friday, April 4 9:00 AM to 6:00 PM
Parsons The New School For Design
Tishman Auditorium
66 West 12th Street, New York City

Collaboration between science and design is yielding a radical new way of visualizing, understanding, and manipulating the natural world. MIND08 is a conference, presented by Seed and MoMA and inspired by Design and the Elastic Mind, which aims to catalyze this convergence. Bringing together an eclectic group of speakers and participants, including leading scientists, designers, and architects, the conference will explore topics such as the personal genome, brain visualization, generative architecture, and collective design. MIND08 is an opportunity to interact with the ideas and thinkers transforming our visual and intellectual landscape.

“Experiments in Organic Design”
11:15 AM – 12:45 PM Introduction by Paola Antonelli and Adam Bly
Neri Oxman – Materialecology
Erik Demaine – Computational Origami
Bradley Samuels – Nature and Artifice
Skylar Tibbits / Marc Fornes – Partly Surface
Greg Lynn – New City


– SIMAE Contemporary Techniques, New Strategies (Barcelona)

Marc Fornes / THEVERYMANY will be giving a talk (Friday April 11th)

2008 International Architecture Symposium
9-11 April 2008

Everything we see and witness around us is affected by technological progress and the force of social issues, especially the economic factors of our times. We have experienced fundamental, irreversible changes in a myriad of contexts: globalization, the technological and digital revolution, and new production systems, with delocalization to other continents, and their subsequent increase in purchasing power. These changes even affect the delicate balance of our ecosystem.

SPEAKERS (Friday 11th)
Denis Dollens ( EXODESIC / Santa Fe Art Institute )
Frederic Fol Leymarie ( University of London, UK )
Alvin Huang & Alan Dempsey ( Future Systems Architects, UK )
Marc Fornes ( THEVERYMANY, USA )
Joan Guash ( RDI, Grans Projectes ASCAMM )
Alberto Estevez ( Director Ma Arquitectura Biodigital EsArq_UIC )

Bernard Cache ( Objectile, France )
Evan Douglis ( Chairman, Pratt School of Architecture, USA )
Ali Rahim ( University of Pennsylvania PennDesign, USA )

Moderated by Evan Douglis
Special Guest: Alejandro Zaera ( FOA, UK )


– NODE08 (Frankfurt)

THEVERYMANY ( Marc Fornes & SKYLAR TIBBITS ) will be giving a talk entitled “Explicit&Encoded” and setting up “APERIODIC VERTEBRAE v2.0”;


NODE08 is dedicated to the arts of digital media. Whether its about media art, controlling lighting systems, interactions with the real world, synaesthetic experiences or video projections into 3d spaces – either way, software becomes the central working media. The focus of this event lies in the workshops and speeches in which artists, designers, architects and the technical minded share their knowledge and works by means of various exhibitions and situations with the Luminale audience. Meet renowned artists from all over the world and developers who – inspired by the many possibilities – realize a great deal of their projects employing the software project vvvv, which started out in Frankfurt am Main.

Symposium moderated by Eno Henze at the Velvet Club
(Weissfrauenstrasse 12-16, Frankfurt)

Joreg + Sebastian Gregor + Sebastian Oschatz + Max Wolf
Paul Prudence (
Berthold Scharrer “SINE Matters – computed geometry in architecture”
Herbert W. Franke “Grafik aus dem Computer – Auf dem Weg zum Cyberspace”
Casey Reas ( “FORM + CODE”
What are the relationships between code (computer programs) and visual form? This presentation is centered around seven themes: What is Code?, Computers and Form, Repetition, Transformation, Parameters, Visualization, and Simulation. Using these themes as a foundation, the history of procedural and algorithmic work is discussed through examples from visual design, art, and architecture.
Mark Fornes & Skylar Tibbits (THEVERYMANY) “Explicit & Encoded”
Regine Debatty ( “Genetically Modified Art”
Verena Kuni – “back to the future”.

080131_Exhibition: Aperiodic_Vertebrae (day4)

Generator.x 2.0: beyond the screen…” an exhibition curated by Marius Watz at the DAM(Berlin) with works by Jared Tarbell (US), Commonwealth (US), Theverymany (FR/US), Leander Herzog (CH), Marius Watz (NO) and participants of the Generator.x 2.0 Workshop…

THEVERYMANY (Marc Fornes, Skylar Tibbits) / Aperiodic_Vertebrae
LOG_assembly_day_04: things are going smoother – one day to go before the opening…

080130_Exhibition: Aperiodic_Vertebrae

THEVERYMANY has been set up based on a continuum research on explicit and encoded protocols within design – the first implicit consequence of its core is to let traces; those traces – often under the format of simple text files – allow to exactly reproduce or alter the model, eventually share axioms… but it somehow also requires to admit and assume those traces, if so, one can learn from mistakes, errors and/or tolerances of previous stages or generation based on feed back…

Yesterday was the kick start in Berlin of the assembly process for the installation -once again the amount of components generated through a long chaine of various small codes / utilities has directly revealled “dirt”/issues hidden behind a fast/furious seamless process… yet nothing extraordinary beyond the purpose of a physical mock up: large scale test for a complete automate pipe line of form & drawing generation…

One of the significant issue we came across is related to the nature of tiling and computation – the subdivision algorythm is based on a recursive protocol (or SUBSTITUTION) which is first drawing a primitve pyramide (within a choice of four primitives) which then gets subdivide – the process is repeated many times within itself to generate self-similarity… the issue there is that within each generation the protocol requires to “compare” (points, lenght, areas, etc…) and that matching process needs to determine whether two geometry or parameters are “equal” given an inevitable rounding errors… unfortunately the rounding errors are bound to accumulate whithin each generation…

Yet it wasn’t any special issue except when point connection gets generated and therefore requires to increase the tolerance factor not to miss any neighbors… though applying overal tolerance is triggering other error trapping while small naming or matching utilities code are running as host on the larger protocol…

Anyway – suming up it is yet still triggering slight erros and confusion – though I’d like to be transparent and learn within those error trapping – it is defintively part of a certain material paradigm debugging…

Let see which surprises are we getting tomorrow…
“a chaque jour sa peine…”

080124_Exhibition: Aperiodic_Vertebrae

THEVERYMANY (Marc Fornes, Skylar Tibbits) has been kindly invited to exhibit a physical piece at “Generator.X v2.0: Beyond the screen” – a workshop and exhibition about digital fabrication and generative systems curated by Marius Watz ( in collaboration with Club Transmediale and [DAM] Berlin.

Based onto earlier experimentation (Aperiodic series) the installation is an assembly of nearly 500 flat panels (11 types) all milled within 6 sheets (8 feet by 4 feet) of corrugated plastic (4 colors: black, silver grey, white and translucent) and also nearly 500 assembly details (moreless all unique!) all laser cut onto 7 sheets of transparent acrylic…
Despite mesuring 13 feet long (after been scaled nearly by half for simple reason of space available within the gallery!) all the panels and assembly details are now flying over nested within one suitcase only…
(pictures of the assembly process should come up soon)

It has been quite some intense moments of scripting since last weekend – mainly sequences of utilities codes – in order to perform a complete automaton starting from the first 4 nurbs curve (those ones were drafted!), the generation of the geometries till the production of each components, notches, unroll, color coding, naming, etc… but there were also a lot of discussion on logic, sequence and protocols to be set up in order to PRE-facilitate as much as we can the entire physical re-fold-assembly of nearly a thousand parts…
Illustrated above (top) the layout of one of the acrylic sheet (number 6) with 66 assembly details – all got named with the number of the piece (as text + name of the object) + each notche with the color of the brick it should connect to and the name of its panel it should locked in…
Illustrated above (bottom) the lay out of one of the 11 types of panels onto a sheets of corrugated plastic – the intersting figure is that the nesting of the panels sheets has been the only hand protocols as a simple traight forward array of the same geometry – this is where it is a hughe gain of time and energy as nesting for so many parts if different would take ages (if even only possible) to find an efficient nested solution…
That starting hypothesis of embeded relative simplicity due to the self-similarity (without even counting the labor time saved to look for the right panels when assembling – imagine a pile of 500 panels to pick from?!!) is RE-questioning the complete mass customization fashion and other kit of parts…
Though the amount of components generated which have to be RE-assembled is also RE-questioning the limit of using generative processes without going further down the line using assembly robots…

Generator.x 2.0: Beyond the Screen
24 Jan -­ 2 Feb 2008, Ballhaus Naunynstrasse / [DAM] Berlin

Design: THEVERYMANY (Marc Fornes + Skylar Tibbits)
Scripting: Marc Fornes
Manufacturing protocols: Marc Fornes + Skylar Tibbits
Laser cutting: Skylar Tibbits
CNC & material research: Jared Laucks
Assembling: Skylar Tibbits (+ helpers!)

(starting on the Jan 29th till February 2nd)

080121_Consulting: polyhedrons frame structure 02

following up on some side escapism while running on more “rational” automaton for an exhibition in berlin (more to come soon)
here the previous code developped for the course of a friend at Knowlton School of Architecture has been applied onto some random polyhedrons.

080118_Consulting: polyhedrons frame structure 01

I recently happen to write few codes for Aurel Von Richtofen who is teaching a course/seminar based on rhinoscript at the Knowlton School Of Architecture (Ohio State University) like: select points within closed polygones, points relaxation/explosion, frame along the edge of polygons, etc…
Whenever I have here or there an hour to kill I often happen to re-read a previous code, clean it and often push it slightly further to render few frames – here are some random fast track results…

PROTOCOL (original version):
– for each closed polygons
– for each faces
– extract edges
– add polylines: array(edge start pt, end pt,face centroide)
– offset the curve (on face – toward the centroide)

Many “quick fix” upgrades are possible:
recursive subdivision according to face aera, membrure thickness according to edge length, etc…


Tooling development (in progress) for SOM – different codes:

– Panels: honeycomb subdivision of a nurbs surface based on the UV coordinates of an host nurbs surface (here a sphere) – each cells is re-subdivided into planar panels (triangles) which are able to rotate onto the edge they share with the original cell.

– “SUNCARE” : the facade panels are rotating based on a Sun path “analysis” – in that exemple a random arc inclined 45 degree – though can easily be ploted based on the GPS coordinates of the site and the sun data using as parameters the azimuth and elevation (thx to Neil Katz).

– Animation: rhino animation (number of frame according to sun data sampling) where the honeycomb panels open whenever directly exposed to the sun (with decay)…

AZIMUTH AND ELEVATION – an angular coordinate system for locating positions in the sky. Azimuth is measured clockwise from true north to the point on the horizon directly below the object. Elevation is measured vertically from that point on the horizon up to the object. If you know the azimuth of a constellation is 135° from north, and the elevation is 30°, you can look toward the southeast, about a third of the way up from the horizon to locate that constellation. Because our planet rotates, azimuth and elevation numbers for stars and planets are constantly changing with time and with the observer’s location on earth.


Since my very traditionalist architectural educational background in France – the Sphere has been unfortunatly very early on associated my history & theory course and french Neo-classical (though utopist) architects such as “Nicolas Ledoux” – and therefore temporally banished from my formal language ever since; so what is it that suddenly brings it back? was it the Star Wars “baby boom”? is it Rem Koolhaas and his (re-)recent fascination for the icone as primitives like in his recent proposal for the Ras al Khaimah Convention and Exhibition Centre in the UAE?

– pick a closed surface or polysurface
– plot random points within that solid
– assign a sphere to each of the points; its radius being either the same for each or weighted according to the color of the point
– for every point boolean its sphere with his neighbours

In their book Geometry and the imagination David Hilbert and Stephan Cohn-Vossen describe eleven properties of the sphere and discuss whether these properties uniquely determine the sphere. Several properties hold for the plane which can be thought of as a sphere with infinite radius. These properties are:

The points on the sphere are all the same distance from a fixed point. Also, the ratio of the distance of its points from two fixed points is constant.
The first part is the usual definition of the sphere and determines it uniquely. The second part can be easily deduced and follows a similar result of Apollonius of Perga for the circle. This second part also holds for the plane.

The contours and plane sections of the sphere are circles.
This property defines the sphere uniquely.

The sphere has constant width and constant girth.
The width of a surface is the distance between pairs of parallel tangent planes. There are numerous other closed convex surfaces which have constant width, for example Meissner’s tetrahedron. The girth of a surface is the circumference of the boundary of its orthogonal projection on to a plane. It can be proved that each of these properties implies the other.
A normal vector to a sphere, a normal plane and its normal section. The curvature of the curve of intersection is the sectional curvature. For the sphere each normal section through a given point will be a circle of the same radius, the radius of the sphere. This means that every point on the sphere will be an umbilical point.

All points of a sphere are umbilics.
At any point on a surface we can find a normal direction which is at right angles to the surface, for the sphere these on the lines radiating out from the center of the sphere. The intersection of a plane containing the normal with the surface will form a curve called a normal section and the curvature of this curve is the sectional curvature. For most points on a surfaces different sections will have different curvatures, the maximum and minimum values of these are called the principal curvatures. It can be proved that any closed surface will have at least four points called umbilical points. At an umbilic all the sectional curvatures are equal, in particular the principal curvature’s are equal. Umbilical points can be thought of as the points where the surface is closely approximated by a sphere.
For the sphere the curvatures of all normal sections are equal, so every point is an umbilic. The sphere and plane are the only surfaces with this property.

The sphere does not have a surface of centers.
For a given normal section there is a circle whose curvature is the same as the sectional curvature, is tangent to the surface and whose center lines along on the normal line. Take the two center corresponding to the maximum and minimum sectional curvatures these are called the focal points, and the set of all such centers forms the focal surface.
For most surfaces the focal surface forms two sheets each of which is a surface and which come together at umbilical points. There are a number of special cases. For canal surfaces one sheet forms a curve and the other sheet is a surface; For cones, cylinders, toruses and cyclides both sheets form curves. For the sphere the center of every osculating circle is at the center of the sphere and the focal surface forms a single point. This is a unique property of the sphere.

All geodesics of the sphere are closed curves.
Geodesics are curves on a surface which give the shortest distance between two points. They are generalisation of the concept of a straight line in the plane. For the sphere the geodesics are great circles. There are many other surfaces with this property.

Of all the solids having a given volume, the sphere is the one with the smallest surface area; of all solids having a given surface area, the sphere is the one having the greatest volume.
These properties define the sphere uniquely. These properties can be seen by observing soap bubbles. A soap bubble will enclose a fixed volume and due to surface tension it will try to minimize its surface area. Therefore a free floating soap bubble will be approximately a sphere, factors like gravity will cause a slight distortion.

The sphere has the smallest total mean curvature among all convex solids with a given surface area.
The mean curvature is the average of the two principal curvatures and as these are constant at all points of the sphere then so is the mean curvature.

The sphere has constant positive mean curvature.
The sphere is the only surface without boundary or singularities with constant positive mean curvature. There are other surfaces with constant mean curvature, the minimal surfaces have zero mean curvature.

The sphere has constant positive Gaussian curvature.
Gaussian curvature is the product of the two principle curvatures. It is an intrinsic property which can be determined by measuring length and angles and does not depend on the way the surface is embedded in space. Hence, bending a surface will not alter the Gaussian curvature and other surfaces with constant positive Gaussian curvature can be obtained by cutting a small slit in the sphere and bending it. All these other surfaces would have boundaries and the sphere is the only surface without boundary with constant positive Gaussian curvature. The pseudosphere is an example of a surface with constant negative Gaussian curvature.

The sphere is transformed into itself by a three-parameter family of rigid motions.
Consider a unit sphere place at the origin, a rotation around the x, y or z axis will map the sphere onto itself, indeed any rotation about a line through the origin can be expressed as a combination of rotations around the three coordinate axis, see Euler angles. Thus there is a three parameter family of rotations which transform the sphere onto itself, this is the rotation group, SO(3). The plane is the only other surface with a three parameter family of transformations (translations along the x and y axis and rotations around the origin). Circular cylinders are the only surfaces with two parameter families of rigid motions and the surfaces of revolution and helicoids are the only surfaces with a one parameter family.


Constructive solid geometry (CSG) is a technique used in solid modeling. CSG is often, but not always, a procedural modeling technique used in 3D computer graphics and CAD. Constructive solid geometry allows a modeler to create a complex surface or object by using Boolean operators to combine objects. Often CSG presents a model or surface that appears visually complex, but is actually little more than cleverly combined or decombined objects. (In some cases, constructive solid geometry is performed on polygonal meshes, and may or may not be procedural and/or parametric.)

The simplest solid objects used for the representation are called primitives. Typically they are the objects of simple shape: cuboids, cylinders, prisms, pyramids, spheres, cones. The set of allowable primitives is limited by each software package. Some software packages allow CSG on curved objects while other packages do not.

It is said that an object is constructed from primitives by means of allowable operations, which are typically Boolean operations on sets: union, intersection and difference.

A primitive can typically be described by a procedure which accepts some number of parameters; for example, a sphere may be described by the coordinates of its center point, along with a radius value. These primitives can be combined into compound objects using operations like these:
– boolean union: the merger of two objects into one.
– boolean difference: the subtraction of one object from another.
– boolean intersection: the portion common to both objects

Combining these elementary operations it is possible to build up objects with high complexity starting from simple ones.

in the case of spheres as primitives – if all have the same exact radius, the complex composite object -resultant from a set of boolean operations- can be describe out of one spherical mould from which all the different parts are trimmed: the challenge here will be to describe and catalogue all the parts not as geometry but rather as 3d trim paths for robotic arm…


Fast track SOM “tooling”: developed within the same frame work than “070720_SOM_Rhinoscripting_Class” – the code has been rapidly twiked in order to generate Honeycomb “cushions”; applied onto a primitive geometry type of host – here onto a cylindre – all the cushions are the exact same, except for their orientation: randomly inward or outwoard (therefore two moulds would still be required)

Somehow – within that generic test – the bump effect displayed here calls for an obvious references to Herzog and Demeuron’s Prada building (though diagrid – glass) or Munich stadium (once more diagrid – inflated ETFE cushions)

– honeycomb vertices in a row
– honeycomb vertices in a column
– depth for the “cushion”
– target percentage for the random number of cushions oriented outward or inward

ETFE (Ethylene Tetrafluoroethylene) is a fluorocarbon-based polymer (a fluoropolymer): a kind of plastic. It was designed to be a material with high corrosion resistance and strength over a wide temperature range.

An example of its use is as pneumatic panels to cover the outside of the football stadium Allianz Arena or the Beijing National Aquatics Centre – the world’s largest structure made of ETFE film (laminate). The panels of the Eden Project are also made of ETFE and the Tropical Islands have a 20.000 m² window made of this translucent material.

ETFE is commonly used in the Nuclear Industry for tie or cable wraps. This is because ETFE exhibits excellent mechanical toughness and a chemical resistance that rivals Polytetrafluoroethylene (PTFE). In addition, ETFE exhibits a high-energy radiation resistance and can withstand moderately high temperatures for a long period of time.

Examples of brand names of ETFE are Tefzel by DuPont, Fluon by Asahi Glass Company and Texlon by Vector Foiltec.


PAVILION – Free-standing structure (ie wikipedia)
Pavilion may refer to a free-standing structure sited a short distance from a main residence, whose architecture makes it an object of pleasure. Large or small, there is usually a connection with relaxation and pleasure in its intended use. A pavilion built to take advantage of a view is referred to as a gazebo.

POWERS OF TEN (ie wikipedia)
Powers of Ten is a 1977 short documentary film written and directed by Charles Eames and his wife, Ray. The film depicts the relative scale of the Universe in factors of ten (see also logarithmic scale and order of magnitude). The film is a modern adaptation of the 1957 book Cosmic View by Kees Boeke—and more recently is the basis of a new book version. Both adaptations, film and book, follow the the form of the Boeke original, adding color and photography to the black and white drawings employed by Boeke in his seminal work (Boeke’s original concept and visual treatment is all too often uncredited or insufficiently credited in contemporary accounts).

The film begins with an aerial image of a man reclining on a blanket; the view is that of one metre across. The viewpoint, accompanied by expository voiceover by Philip Morrison, then slowly zooms out to a view ten metres across ( or 101 m in standard form), revealing that the man is picnicking in a park with a female companion. The zoom-out continues, to a view of 100 metres (10² m), then 1 kilometre (10³ m), and so on, increasing the perspective—the picnic is revealed to be taking place near Soldier Field on Chicago’s lakefront—and continuing to zoom out to a field of view of 1024 metres, or the size of the observable universe. The camera then zooms back in to the picnic, and then to views of negative powers of ten—10-1 m (10 centimetres), and so forth, until we are viewing a carbon nucleus inside the man’s hand at a range of 10-18 metre.

AA PAVILION “the powers of ten”
The different renders of that post are extracted from theverymany proposal for the AA Ten pavilion competition. The proposal was looking at “self-similarity” as the driving force behind the structure of its pavilion somehow allowing similarities within the possible “fractal” variation of the scale of its components -embeded within the logic of its aperiodic packing- and the emergent filiation between the 10 generations of AADRL graduates: all are different and all somehow within a certain depth are very similar…

Theverymany is now developping further its proposal -currently pushing with its aperiodic series- and is looking for sponsors and eventual venues to construct it – anyone interested?…


The flower is said to be the most conspicuous part of the plant. Their appeal has encouraged Man to know and possess them, developing technique such as gardening. The beauty of their petals – regarded as a highly modified leafs – has mainly been developed to attract pollinators (insects, birds or bats) which play an important role in the reproductive process of pollinating.

As an architect the easy shortcut of assimilating petals to cladding is a very tempting analogy: even though both have very different constraints and mode of operation, cladding -like petals- other than defining and protecting its host is often mainly regarded as an ornamental design exercise with one function only: made to attract… though within one rule only: within budget!

Here that shortcut has been taken to its paradigm as starting hypothesis: assuming the time of a geometrical wandering only – like some sort of temporary but controlled amnesia- that a cladding strategy could be elaborate on a flower attraction effect (affect??) though not by the complex geometry of its petal but rather by the intricacy of its assembly…

If “within a certain cost” intricacy can only be achieved within repetition – here:
– take 4 flowers (flower as assembly but also assemblage) describe within a pyramid
– each flower is made of 4 petals
– each petal is simplified based on a closed nurbs curve written within a triangle
– but also each petals is common at two flowers
– add 4 more flowers as the exact mirror of the first ones
You can therefore describe 8 different flowers of 4 petals with height 8 unique petals only…

If the entire story isn’t based on 4 random pyramids but based on four Danzer tiles you could depending on the scale potentially describe any shapes within such packing based on 4 flowers (connections) and 8 unique petals (tiles)…


Here is finally the second post on a series of tests done on 3d aperiodic pattern – here based on a Danzer tiling assembly – the other different types of outputs will be posted as a following series of post…

A given set of tiles, in the Euclidean plane or some other geometric setting, admits a tiling if non-overlapping copies of the tiles in the set can be fitted together to cover the entire space. A given set of tiles might admit periodic tilings, tilings that remain invariant after being shifted by a translation. (For example, a lattice of square tiles is periodic.) It is not difficult to design a set of tiles that admits non-periodic tilings as well (For example, randomly arranged tilings using a 2×2 square and 2×1 rectangle will typically be non-periodic.) An aperiodic set of tiles however, admits only non-periodic tilings, an altogether more subtle phenomenon.

There are 22 vertex configurations which occur in an infinite (global) Danzer tiling produced by inflating an initial finite patch an infinite number of times. Danzer says in his paper that there are 27 vertex configurations total, but says nothing about the characteristics of the five configurations which do not appear in a global tiling. We have identified a total of 174 vertex configurations by exhaustive search. At present we are unsure whether Danzer’s remark is an error or whether some 5 of these are special in some way.

Acknowledgment: I can’t pretend taking much credits in the field of aperiodic pattern in architecture as yet somehow in the direct line of people such as Daniel Bozia, Aranda/Lasch, K. Steinfeld and many others who posted on the web explicit and illustrated information on the subject which helped me to figured it out…



Investigations on “combinatorial processes” or some step stones on the development of three interesting discreet algorythms (Meshing+Orientation+Aperature); combined the results display some emergent qualities very near the inticacy of some Coral structures (though staying within the genotype of a certain “flat paradigm”)…


STOCHASTIC is synonymous with “random.” The word is of Greek origin and means “pertaining to chance” (Parzen 1962, p. 7). It is used to indicate that a particular subject is seen from point of view of randomness. Stochastic is often used as counterpart of the word “deterministic,” which means that random phenomena are not involved. Therefore, stochastic models are based on random trials, while deterministic models always produce the same output for a given starting condition. . (ie


(n)certainties biotopes is the brief of the studio Francois Roche / R&Sie and Marc Fornes / theverymany are co-teaching this Fall 2007 at Columbia University:
(n)certainties is based on Robotics & bottom up protocol of growth…
(thx Francois for the kind inviation!)

Option Explicit
‘Script written by Marc Fornes
‘Script copyrighted by Marc Fornes /
‘Script version 13 September 2007 16:05:03

Call Main()
Sub Main()

Dim i,j,k
Dim arrPt

Dim dblLow : dblLow = -5
Dim dblUp : dblUp = 10

Dim arrPts()
Dim n : n = 0

Call rhino.enableRedraw(False)
‘ ===========================
For i = 0 To 5
For j = 0 To 5
For k = 0 To 5

ReDim Preserve arrpts(n)
arrPts(n) = array(random(dblLow, dblUp),random(dblLow, dblUp),random(dblLow, k*dblUp))
Call rhino.AddPoint (arrPts(n))

If n >= 2 Then
Dim arrPtNearer : arrPtNearer = functNearestNeighbor(arrPts, n)
Dim strLine : strLine = rhino.addLine(arrPts(n), arrPtNearer)
Call Rhino.AddCone (arrPts(n), arrPtNearer, 0.2)
call rhino.addSphere (arrPts(n), 0.2)
End If

n = n + 1

‘ ===========================
Call rhino.enableRedraw(True)

End Sub

Function random(low, up)
random = (up – low) * Rnd + low
End Function

Function functNearestNeighbor (arrPts, index)

Dim k, dblDist
Dim dblDistMin : dblDistMin = 100000

For k = 0 To UBound(arrPts)

dblDist = Rhino.Distance(arrPts(index), arrPts(k))

If dblDist 0 And dblDist < dblDistMin Then
dblDistMin = dblDist
Dim arrPtNearest : arrPtNearest = arrPts(k)
End If


functNearestNeighbor = arrPtNearest

End Function


Curation + installation: Marc Fornes & Skyllars Tibbits
OPENING ON FRIDAY SEPTEMBER 9TH 2007, 7PM (Private reception at 5pm)
F.U.E.L. Collection – 249 Arch Street, Philadelphia –

070806_Tesselation: Flat Panels On Nurbs Surface

Updates an on going research within the studio on how to create a taylor ornementation pattern onto an host nurbs surface with flat panels which are not triangulated – in that option specific option the panels are connected “air tight” (within one specific condition of double curvature only).


“Expressionism is the tendency of an artist to distort reality for an emotional effect; it is a subjective art form.” (Ie

a photography is a registration of reality; its expressionist distortion with the collage of a result of an explicit process of design is a certain form of ironie on a sunday night…


very first test or what i would qualify as a “performative computational design sketch” – yet it does look wild – which within the field of “explicit design process” is often consider as “not in control” – I accept the critic – though that one has more thoughts embeded in terms of pre-rational emergent design process that it does look like…

repetition within subdivision – can’t argue yet about it as still requires more development – more should come…


Small utility following on a previous experiment “mapping for tailoring” which would split a surface according to Angle anaylis or curvature analysis…

Update : developpment of a generic Rainbow color gradient function according to a a list of pre-set colors – the function is allocating a color gradient according to the number of colors and the order of the defined colors placed into the list…
next step is to deelopped the blending part…

– subdivide nurbs surface either as point set or polysurface
– calibrate reference vector
– for each surface/points measure angle vector to normal

Extended option (yet not optimal in terms of speed)
– for each angle contour areas, check if subsurfaces are sharing an edge
– if yes delete both edges
– join left boundaries as “angle contour lines”
– split surface

EXTEND: (ie wikipedia)

CALIBRATION: Calibration refers to the process of determining the relation between the output (or response) of a measuring instrument and the value of the input quantity or attribute, a measurement standard. In non-specialized use, calibration is often regarded as including the process of adjusting the output or indication on a measurement instrument to agree with value of the applied standard, within a specified accuracy. (…) Calibration also can refer to judgments made by a prognosticator, for example, a weather-forecaster who states that “there is an 80% chance of rain today,” if properly calibrated, will say this on precisely 80% of the days during which it rains.


INTERIOR DECORATION or décor is the art of decorating a room so that it is attractive, easy to use, and functions well with the existing architecture. The goal of interior decoration is to provide a certain “feel” for the room; it encompasses applying wallpaper, painting walls and other surfaces, choosing furniture and fittings, such as light fixtures, floorplans and providing other decorations for the area such as paintings, sculptures and carpets.” (i.e. wikipedia)


Interesting – I always thought I subconsciously “avoided” to work around 3D Voronoi partly for preconception as “over trendy”, partly becausenever solving any other problem for me other than beautifull intricate cellular packing – I finally had to write my own code to generate a 3D Voronoi as an under layer piece of code for an other design tool application.
The structure of the code written in rhinoscript DOESN”T REQUIRE THE NEED OF QHull data set; the code somehow “happened” to become a 3D Voronoi while originally looking at a different purpose – looking at shapes describe through some kind of wireframe in tension based on locator in 3D space – the striking similarity of the first result finally forced me to spend few more extra hours to force the code to output a more mathemically purist version of the 3D Voronoi… finally or simply once more “never say never”…

“Mathematically purist” – well within our more and more complex understanding of our contemporary society, the word “purist” can only be a very narrow and dangerous call – and I do apologize for that… my interpretation at the time was a qualificatif for simply following straight forward the steps of the Voronoi 3D geometrical description… sorry – no funky mathematical algorythm…
Though staying within rhino – a CAAD software – and write your own tool allows I believe to be in control of your code and therefore be able to manipulated away from its primarly algorythm toward a design tool – like with the 2D version for exemple…

First “delirium tremens”


Being currently developping in parallel multiple schemes /projects /research, I finally decided to start uploading/replacing/developping theverymany agenda in a non-linear fashion for the next few weeks – snapshots in progress as they come! – non-linearity of posts within a blog format might be a challenge though?!
Image_01: XY component array… simple as “game of mod”… “mod” being a visual basic expression… once more ordering the “host array” is the key of the pattern…

Image 02-03: “this isn’t a map!” – both color scheme are generated based on a “Draft analysis tool as geometry” – the code is analysing for each surface within a polysurface its orientation compare to a given direction… then via neighbour check algorythm, the code is generating some sort of “level curves” between the zone of same orientation… in progress – yet running slowly – but more to come soon…

Image 04-05 are generated based on a personnal custom developped Voronoi 3D rhinoscripted tool – that tool is actually generating the cell via a geometrical set of operation within rhino instead of generating first the data set in QHUll and then, once sorted out, only drawing the cell by linkage of points in rhino – nothing exceptionnal and very short, the code is simply following, in a step by step process, the mathematical logic! – yet running obviously slower but though still surprisingly fast – the code is calling the rhino “boolean Intersection” method to create closed polysurfaces – that very mecanical processes allowed me to alterate the “pure” mathematical Voronoi algorythm in order to strategize on it as a design tool: here the partially troncated cells are linking each inputed points within the mass to the external enveloppe in a conic form – this speculation in progress is looking at cones of light & ventillation towards precise locations within a larger mass… -in progress-


First test looking at pattern for the floor of an hotel lobby (SOM Interior); one continuous circulation space is treated as a blend of different “moments” or sub-spaces highlighted here through an overall mapping system of ceramic tiles.


The PATTERN is a form, template, or model (or, more abstractly, a set of rules) which can be used to make or to generate things or parts of a thing, especially if the things that are created have enough in common for the underlying pattern to be inferred, in which case the things are said to exhibit the pattern. Pattern matching is the act of checking for the presence of the constituents of a pattern. The detection of underlying patterns is called pattern recognition. The question of how different patterns emerge is accomplished through the work of the scientific field of pattern formation. Patterns are also related to repeated shapes or objects, sometimes referred to as elements of the series.

The simplest patterns are based on repetition/PERIODICITY: several copies of a single template are combined without modification.”

INCREASING THE RESOLUTION: variation criteria are illustrated through the repetition of “identical”, “similar” or “self-similar” hexagonal components via changes of scale (each tile format can be recomposed by an assembly of smaller tiles having the same shape), color (allowed within “stepped ranges” in order not to maximize the number of different colors), finishes ( from glossy to mat and ruff) and orientation (the poly-directionality of the six sided shape of the hexagon chosen here for its best fit to the numerous branching direction of the project is reduced via a re-subdivision into three pairs of two sides, shaping some sort of arrow acting as a compass)

Pseudo Code:

post in progress – requires editing…


– readings while testing VRay fo rhino4 –

In computer science, computational geometry is the study of algorithms to solve problems stated in terms of geometry. Some purely geometrical problems arise out of the study of computational geometric algorithms, and the study of such problems is also considered to be part of computational geometry.

The main impetus for the development of computational geometry as a discipline was progress in computer graphics, computer-aided design and manufacturing (CAD/CAM), but many problems in computational geometry are classical in nature.

Other important applications of computational geometry include robotics (motion planning and visibility problems), geographic information systems (GIS) (geometrical location and search, route planning), integrated circuit design (IC geometry design and verification), computer-aided engineering (CAE) (programming of numerically controlled (NC) machines).

The main branches of computational geometry are:

– COMBINATORIAL COMPUTATIONAL GEOMETRY, also called algorithmic geometry, which deals with geometric objects as discrete entities. A groundlaying book in the subject by Preparata and Shamos dates the first use of the term “computational geometry” in this sense by 1975
– NUMERICAL COMPUTATIONAL GEOMETRY, also called machine geometry, computer-aided geometric design (CAGD), or geometric modeling, which deals primarily with representing real-world objects in forms suitable for computer computations in CAD /CAM systems. This branch may be seen as a further development of descriptive geometry and is often considered a branch of computer graphics and/or CAD. The term “computational geometry” in this meaning has been in use since 1971


The primary goal of research in combinatorial computational geometry is to develop efficient algorithms and data structures for solving problems stated in terms of basic geometrical objects: points, line segments, polygons, polyhedra, etc.

Some of these problems seem so simple that they were not regarded as problems at all until the advent of computers. Consider, for example, the Closest pair problem:

Given n points in the plane, find the two with the smallest distance from each other.
One could compute the distances between all the pairs of points, of which there are n(n-1)/2, then pick the pair with the smallest distance. This brute-force algorithm takes O(n2) time; i.e. its execution time is proportional to the square of the number of points. A classic result in computational geometry was the formulation of an algorithm that takes O(n log n). Randomized algorithms that take O(n) expected time, as well as a deterministic algorithm that takes O(n log log n) time, have also been discovered.

For modern GIS, computer graphics, and integrated-circuit design systems routinely handling tens and hundreds of million points, the difference between O(n2) and O(n log n) can be the difference between days and seconds of computation. Hence the emphasis on computational complexity in computational geometry.

The core problems in computational geometry may be classified in different ways, according to various criteria. The following general classes may be distinguished.

In the problems of this category, some input is given and the corresponding output needs to be constructed or found. Some fundamental problems of this type are:

– Convex hull: Given a set of points, find the smallest convex polygon containing all the points.
– Line segment intersection: Find the intersections between a given set of lines.
– Delaunay triangulation: Connect a given set of points forming triangles that satisfy some fatness properties.
– Voronoi diagram: Given a set of points, partition the space according to which point is closest.
– Linear programming: Given a set of halfspaces, find the bottommost point contained in their intersection.
– Closest pair of points: Given a set of points, find the two with the smallest distance from each other.
– Euclidean shortest path: Connect two points in a Euclidean space (with polyhedral obstacles) by a shortest path.
– Polygon triangulation: Given a polygon, partition its interior by connecting its vertices.
The computational complexity for this class of problems is estimated by the time and space (computer memory) required to solve a given problem instance.

In geometric query problems, commonly known as geometric search problems, the input consists of tho parts: the invariant part (called search space) and the query part, which varies over the problem instances. The invariant part typically needs to be preprocessed, in a way that multiple queries can be answered efficiently. Sometimes, other operation, like the insertion and removal of points are also allowed. Some fundamental geometric query problems are:

– Range searching: Preprocess a set of points, in order to efficiently count the number of points inside a query region.
– Point location: Given a partitioning of the space into cells, produce a data structure that efficiently tells in which cell a query point is located.
– Nearest neighbor: Preprocess a set of points, in order to efficiently find which point is closest to a query point.
– Ray tracing: Given a set of objects in space, produce a data structure that efficiently tells which object a query ray intersects first.
The computational complexity for this class of problems is estimated by:

the time and space required to construct the data structure to be searched in
the time (and sometimes an extra space) to answer a queries.

A yet another major class are the dynamic problems, in which the goal is to find an efficient algorithm for finding a solution repeatedly after each incremental modification of the search space (addition or deletion input geometric elements). Algorihms for problems of this type typically involve dynamic data structuress. Any of the computational geometric problems may be converted into a dynamic one. For example, the range searching problem may be converted into the dynamic range searching problem by providing for addition and/or deletion of the points.

The computational complexity for this class of problems is estimated by:

the time and space required to construct the data structure to be searched in
the time and space to modify the searched data structure after an incremental change in the search space
the time (and sometimes an extra space) to answer a queries.

Some problems may be treated as belonging to either of the categories, depending on the context. For example, consider the following problem.

– Point in polygon: Decide whether a point is inside or outside a given polygon.
In many applications this problem is treated as a single-shot one, i.e., belonging to the first class. For example, in many applications of computer graphics a common problem is to find which area on the screen is clicked by a mouse cursor. However in some applications the polygon in question is invariant, while the point represents a query. For example, the input polygon may represent a border of a country and a point is a position of an aircraft, and the problem is to determine whether the aircraft violated the border. Finally, in the previously mentioned example of computer graphics, in CAD applications the changing input data are often stored in dynamic data structures, which may be exploited to speed-up the point-in-polygon queries.

In some contexts of query problems there are reasonable expectations on the sequence of the queries, which may be exploited either for efficient data structures or for tighter computational complexity estimates. For example, in some cases it is important to know the worst case for the total time for the whole sequence of N queries, rather than for a single query.


This branch is also known as GEOMETRIC MODELLING, computer-aided geometric design (CAGD), and may be often found under the keyword curves and surfaces.

Core problems are curve and surface modelling and representation.

The most important instruments here are parametric curves and parametric surfaces, such as Bezier curves, spline curves and surfaces. An important non-parametric approach is the level set method.

First (and still most important) application areas are shipbuilding, aircraft, and automotive industries. However because of modern ubiquity and power of computers even perfume bottles and shampoo dispensers are designed using techniques unheard of by shipbuilders of 1960s.


LightHive – the installation of Alex Haw at the AA – is open… (i.e.
Marc Fornes will be in London to follow Alex lecture on thursday May 3rd at the AA.

– all photos are from


“the AA autrement”… is a set of abstracts rendered while figuring out the explicit and encoded rules set for LightHive “diffuseur grammaire”: one could argue that each drawing is acting as some sort of map of the AA school, where the representation devices are a set of unique geomtries -carefully labelled- showing directions of obstacles, accidents and other folds within the terrain of every room…

Simplified as sets of closed polysurfaces, the 3D model allows the code to check for every room which light sources -selected as a point cloud- are enclosed within…

One of many shape… each arrows is growing along the direction of a vector pointing toward any corner of the room boundaries, or furniture piece…


Latest “abstracts” from the development of “LIGHTHIVE”

Lighthive is Alex Haw (Atmos) interactive exhibition at the AA, London (opening early May) for which Marc Fornes & theverymany have been invited to collaborate and write an explicit generative process abble to automatate the shape grammair of most of the 1500 components required to map the exisitng light condition within the AA building.

Each of those “3D star” component is an assembly of two 2D star which can be unrolled and laser cut flat onto thick sheet of acrylic.

INPUT (rhinoscript)
-get the 3D model of the AA school as a set of closed polysurface (each polysurface is one room including the boolean of the furnitures)
-get all the light source modelled at their scaled position as a point (color according to light type)

PSEUDO CODE: at the scale of the phenotype, here the 3D model of the school:
– for every pt (lightsource) do
– if pt is within closed polysurface do
– create two planes through each light (orthogonal to each other)
– for each plane do
– intersect plane and polysurface
– for each intersection curve do
– if pt is within curve do

COMPONENT: at the scale of the component “genotype”, the challenge is to allow replication, proliferation while developping fondamentales genetic modifications such as custom amount of “spikes”, each of those “spikes” having custom lenght, some “spikes” being able to bundle according to neighbourhood condition, etc, etc…

Those components are not displaying any swarm behaviour or collective intelligence, neither is based on dynamic feedback… BUT the generation of each “spike” is following a so long list of rules (possible target tests, few distance tests, many angle tests, etc, etc…) and possible branching transformations according to which there are able to develope and mutate… sometimes up to the point of displaying extreme behaviours impossible to expect… once more “very many” allows or describe a blurry boundary between “automatisation” and Emergence… between Repetition and Intelligence? blurry…

070312_HoneyComb (re-scripting)

A plane-filling arrangement of plane figures or its generalization to higher dimensions. Formally, a tiling is a collection of disjoint open sets, the closures of which cover the plane. Given a single tile, the so-called first corona is the set of all tiles that have a common boundary point with the tile (including the original tile itself).

Wang’s conjecture (1961) stated that if a set of tiles tiled the plane, then they could always be arranged to do so periodically. A periodic tiling of the plane by polygons or space by polyhedra is called a tessellation. The conjecture was refuted in 1966 when R. Berger showed that an aperiodic set of 20426 tiles exists. By 1971, R. Robinson had reduced the number to six and, in 1974, R. Penrose discovered an aperiodic set (when color-matching rules are included) of two tiles: the so-called Penrose tiles. It is not known if there is a single aperiodic tile.

As part of a re-visiting codes series -most often following students requirments- I went back to one of my very first rhinoscript code generating Honeycomb cells onto a host nurbs surface and rewrote it… mainly shorter, for sure much faster and somehow within a concern of a certain “elegance” -to quote the latest trend of fitness criteria accoding to Ali Rahim’s latest issue of AD magasine!- as an exercice within the exercice…

Tips and tricks:
The generation of the honeycomb cells within rhinoscript is now defined by one unique conditional statment using many booleans operations.
If (i>1 And j>1) And ( ( ((i-1)Mod 2) And (((j-2)Mod 4)= 0) ) Or ( (((i-1)Mod 2)=0) And ((j Mod 4)=0) ) Or ( (((i-1)Mod 2)=0) And (((j-1)Mod 4)=0) ) Or ( (((i-1)Mod 2)) And (((j+1)Mod 4)=0) ) )

The axes of honeycomb cells are always quasi-horizontal, and the non-angled rows of honeycomb cells are always horizontally (not vertically) aligned. Thus, each cell has two vertical walls, with “floors” and “ceilings” composed of two angled walls. The cells slope slightly upwards, between 9 and 14 degrees, towards the open ends.

There are two possible explanations for the reason that honeycomb is composed of hexagons, rather than any other shape. One, given by Jan Brożek, is that the hexagon tiles the plane with minimal surface area. Thus a hexagonal structure uses the least material to create a lattice of cells with a given volume. Another, given by D’Arcy Wentworth Thompson, is that the shape simply results from the process of individual bees putting cells together: somewhat analogous to the boundary shapes created in a field of soap bubbles. In support of this he notes that queen cells, which are constructed singly, are irregular and lumpy with no apparent attempt at efficiency.

It is likely that the honey bee constructs the honeycomb based on instinct, and the prevailing theory of biology is that the appearance of such efficient shapes in nature is a result of natural selection.

The closed ends of the honeycomb cells are also an example of geometric efficiency, albeit three-dimensional and little-noticed. The ends are trihedral (i.e., composed of three planes) pyramidal in shape, with the dihedral angles of all adjacent surfaces measuring 120°, the angle that minimizes surface area for a given volume. (The angle formed by the edges at the pyramidal apex is approximately 109° 28′ 16″ (= 180° – arccos(1/3)).)

The shape of the cells is such that two opposing honeycomb layers nest into each other, with each facet of the closed ends being shared by opposing cells.

Individual cells do not, of course, show this geometrical perfection: in a regular comb, there are deviations of a few percent from the “perfect” hexagonal shape. In transition zones between the larger cells of drone comb and the smaller cells of worker comb, or when the bees encounter obstacles, the shapes are often distorted.

In 1965, László Fejes Tóth discovered that the trihedral pyramidal shape (which is composed of three rhombi) used by the honey bee is not the theoretically optimal three-dimensional geometry. A cell end composed of two hexagons and two smaller rhombuses would actually be .035% (or approximately 1 part per 2850) more efficient. This difference is too minute to measure on an actual honeycomb, and irrelevant to the hive economy in terms of efficient use of wax, considering that wild comb varies considerably from any human notion of “ideal” geometry.


Sketch for a canopy structure based on fractal growth of one single component;
It is always striking to me how, despite a complete symetry of assembly and proliferation tactic, such renders can highlight very similar qualities than forest canopies… we are all perfectly aware that natural processes are not randomly based (Phenotype acting on “written” genotype mathematically modelled as Fractals, L-Sytem, Voronoi…) but are also not based on perfect repetition and symetries… once more a proof to me that a return for obvious cost reasons to complete symetry and IDENTIQUE components can reach the affect of SIMILAR or other SELF-SIMILAR tactics…

to be continued…


“Computational Turn of Architecture” will will open on February 20th, 2007.
Curation: Philippe Morel (
marc fornes & theverymany will display 8 projects.
Here the project for PAU library / theverymany on behalf of Zaha Hadid Architects


marc fornes & theverymany have been invited by Alex Haw (from Atmos and AA Ddiploma Master Unit 13) to collaborate to “LightHive : luminous architectural surveillance”, an installation for the Architectural Association, London, April 2007.

EXPLICIT PROTOCOL v1.0: for every room of the 3d model of Architectural Association Building (including symbolic furniture) create Longitudinal and transversal section through the location of each light source, generate from the intersection boundaries a LED diffuser shape (each as a set of two planar shapes intersecting at 90 degrees), anotate the components and finally unfold them (to be laser-cut into flat acrylic sheets)…
According to the amount of components (more than 1400!), the challenge of that project is to build up the rhino engine code as light as possible in order to be abble to run it in one go! the entire descriptive process is yet taking 25 seconds to generate around 1200 components…
In progress…


In computer-aided design, boundary representation—often abbreviated as B-rep or BREP—is a method for representing shapes using the limits. A solid is represented as a collection of connected surface elements, the boundary between solid and non-solid. The basic method was developed independently in the early 1970s by Braid in Cambridge (for CAD) and Baumgart in America (for computer vision). Braid continued his work with the research solid modeller BUILD which was the forerunner of many research and commercial solid modelling systems. Braid worked on the commercial systems ROMULUS, the forerunner of Parasolid, and on ACIS. Parasolid and ACIS are the basis for many of today’s commercial CAD systems.

Boundary representation models are comprised of two parts: topology and geometry. The main topological items are: faces, edges and vertices. A face is a bounded portion of a surface; an edge is a bounded piece of a curve and a vertex lies at a point. Other elements are the shell (a set of connected faces), the loop (a circuit of edges bounding a face) and loop-edge links (also known as winged-edge links or half-edges) which are used to create the edge circuits.

Unlike the constructive solid geometry (CSG) representation, which represents objects as a collection of primitive objects and Boolean operations to combine them, boundary representation is more flexible and has a much richer operation set. This richer operation set makes boundary representation a more appropriate choice for CAD systems than CSG. CSG was used initially by several commercial systems because it was easier to implement but the advent of reliable commercial B-rep kernel systems like Parasolid and ACIS, mentioned above, has led to widespread adoption of B-rep for CAD. As well as the Boolean operations, B-rep has extrusion, chamfering, blending, drafting, shelling, tweaking and other operations which make use of these.

Boundary representation is essentially a local representation connecting faces, edges and vertices. An extension of this was to group sub-elements of the shape into logical units called “features”. Pioneering work was done on this by Kyprianou in Cambridge using the BUILD system and continued and extended by Jared and others. Much other work on this topic has been done in several research centres throughout the world and it is a subject of continuing interest. Features, or geometric features, are the basis of many other developments, allowing high-level “geometric reasoning” about shape for comparison, process-planning, manufacturing, etc.

Boundary representation has also been extended to allow special, non-solid model types called non-manifold models. As described by Braid, normal solids found in nature have the property that, at every point on the boundary, a small enough sphere around the point is divided into two pieces, one inside and one outside the object. Non-manifold models break this rule. An important sub-class of non-manifold models are sheet objects which are used to represent thin-plate objects and integrate surface modelling into a solid modelling environment.

1200 components flat, all similar but all different

Tips’n tricks: (part of code only)
‘ getBoundingBox
arrBoundingBox = Rhino.BoundingBox(arrPolySrfs(i))
dblPlaneHeight = rhino.distance(arrBoundingBox(0), arrBoundingBox(4))
dblPlaneLong = rhino.distance(arrBoundingBox(0), arrBoundingBox(1))
dblPlaneTrans = rhino.distance(arrBoundingBox(0), arrBoundingBox(3))
‘ cuttingPlane LONGITUDINAL
arrPlaneOriginLong = array(arrPt(0)-dblPlaneLong, arrPt(1), arrPt(2)-dblPlaneHeight)
arrPlaneLong = Rhino.MovePlane (Rhino.WorldZXPlane, arrPlaneOriginLong)
strPlaneSrfLong = Rhino.AddPlaneSurface (arrPlaneLong, 2*dblPlaneHeight, 2*dblPlaneLong)
‘ intersect
strCrvIntersect = Rhino.IntersectBreps (arrPolySrfs(i), strPlaneSrfLong)
strCrvIntersectJoin = Rhino.JoinCurves (strCrvIntersect, True)
Call Rhino.SimplifyCurve (strCrvIntersect)
arrVertices = Rhino.CurveEditPoints(strCrvIntersect)

070131_Unroll Surfaces

Non-nested pattern (with obvious overlaps) of unrolled surfaces
(“le champ” project display panels)

Rhinoscript “Tips’n trick” :
Call Rhino.Command (CStr(“_UnrollSrf Explode=No Labels=No _Enter”), vbFalse)

In mathematics, a developable surface is a surface with zero Gaussian curvature. That is, it is surface that can be flattened onto a plane without distortion (i.e. stretching, compressing, tearing). Inversely, it is a surface that can be made by transforming a plane (i.e. folding, bending, rolling, cutting, and gluing).

The developable surfaces that can be realized in 3D space are:

cylinders and, more generally, the generalized cylinder: the cross-section can be any smooth curve
cones and, more generally, conical surfaces, away from the apex
(trivially:) planes, which can be viewed as a cylinder whose cross-section is a line
Spheres are not developable surfaces under any metric as they cannot be unrolled into a plane. The torus has a metric under which it is developable, but such a torus does not embed into 3D space. It can be realized in four dimensions.

Formally, in mathematics, a developable surface is a surface with zero Gaussian curvature. One consequence of this is that all developable surfaces embedded in 3D space are ruled surfaces (though hyperboloids are examples of ruled surfaces that are not developable). Because of this, many developable surfaces can be visualised as the surface formed by moving a straight line in space. For example, a cone is formed by keeping one end of a line fixed while moving the other end in a circle.

A surface on which the Gaussian curvature is everywhere positive. When is everywhere negative, a surface is called anticlastic. A point at which the Gaussian curvature is positive is called an elliptic point.


“POLYTOP” / Marc Fornes & theverymany

“Polytop” is a RANGE of a mass customized coffee tables: each table is different but similar without changing the cost of production: the generative automaton processs for each single entity is starting from the same base frame (according to material and standart sheet size); the code is first plotting a number of pts (according to user specifications) to create a pt cloud onto which is running a customized 2.5D Voronoi; here speculating further onto the use of Vornoi diagrams within the field of design, theverymany is looking at optimization within the production process (more of problem caring than problem solving): only 3 axis require for the CNC cut (though the use of a taper tool allows smoother transitions), reducion of the amout of cuts (each cut is used on both side of the line) and reduction of waste of material : within the production process, every cut out is used to produced an n+2 layer within the vertical section: with one sheet of material you can therefore produce at least 3 to 5 layers.


Etymology: the term “table” is derived from a merger of French table and Old English tabele, ultimately from the Latin word tabula, “a board, plank, flat piece”. In Late Latin, tabula took over the meaning previously reserved to mensa (preserved in Spanish mesa “table”). In Old English, the word replaced bord for this meaning.


The word polytope is used to mean a number of related, but slightly different mathematical objects.


A polygon whose interior consists of all points in the plane which are closer to a particular lattice point than to any other. The generalization to dimensions is called a Dirichlet region, Thiessen polytope, or Voronoi cell.



Those two drawings are part of a speculative research onto Voronoi and Arcs; the serie is looking beyond the trend of Voronoi diagrams and their most common graphical output as cellular aggragates (now used within every architectural school!); here encoded arcs are used to illustrate possible structural moments within each cell boundaries segments…


In Euclidean geometry, an arc is a closed segment of a differentiable curve in the two-dimensional plane; for example, a circular arc is a segment of a circle. If the arc segment occupies a great circle (or great ellipse), it is considered a great-arc segment.

The length of a circular arc of a circle with radius r and subtending an angle θ (measured in radians) with the circle centre, equals θr. For an angle α measured in degrees, the size in radians is given by (α/180°) × π, and so the arc length equals then (α/180°)πr.

Tips’n tricks : (ie: David Rutten’s Rhinoscript101 on Arc)

Function AddArcDir(ByVal ptStart, ByVal ptEnd, ByVal vecDir)
AddArcDir = Null
Dim vecBase : vecBase = Rhino.PointSubtract(ptEnd, ptStart)
If Rhino.VectorLength(vecBase) = 0.0 Then Exit Function
If Rhino.IsVectorParallelTo(vecBase, vecDir) Then Exit Function
vecBase = Rhino.VectorUnitize(vecBase)
vecDir = Rhino.VectorUnitize(vecDir)
Dim vecBisector : vecBisector = Rhino.VectorAdd(vecDir, vecBase)
vecBisector = Rhino.VectorUnitize(vecBisector)
Dim dotProd : dotProd = Rhino.VectorDotProduct(vecBisector, vecDir)
Dim midLength : midLength = (0.5 * Rhino.Distance(ptStart, ptEnd)) / dotProd
vecBisector = Rhino.VectorScale(vecBisector, midLength)
AddArcDir = Rhino.AddArc3Pt(ptStart, ptEnd, Rhino.PointAdd(ptStart, vecBisector))
End Function


“LE CHAMP” is a study for a small gallery for architecture in NYC; within the host of that SOM project with a very low budget and a tight scheddule, marc fornes & theverymany is investigating the notion of field and distributed design.

In order to challenge a program requiring a certain flexibility and still argue with the Modern notion of “open space”, theverymany is following a trend defined in the 90’s by people such as Greg Lynn who argues -in his book “Animate forms”- that boat hulls design is driven towards performances within very different types of sea and streams without actually using mechanical devices to change their morphologies…
though, since the argument is less valide as himself is challenging his students toward “Gigantic robots” and racing boats do integrate mechanical changes like the wings of some US military air fighters…
to be totally obsolete within the teswting field, those planes are actually looking at technology abble to mutate -material with memory- instead of shifting…

from “animate” rules, to shift in morphology, to mutate… back for the purpose of the exercice (lacking of US army budget and time frame developpment) to “animate” as a possible result of differnet forecast, the flow -within “LE CHAMP”- has been the most litterally expressed via a field vectors, actual device support for presentation panels which should be simply laser-cut onto a full spectrum of colored acrylic panels.

project protocol written in rhinoscript (rhino v4.0)

In mathematics a VECTOR FIELD is a construction in vector calculus which associates a vector to every point in a Euclidean space.

Vector fields are often used in physics to model for example the speed and direction of a moving fluid throughout space, or the strength and direction of some force, such as the magnetic or gravitational force, as it changes from point to point.

In the rigorous mathematical treatment, (tangent) vector fields are defined on manifolds as sections of the manifold’s tangent bundle.

A FIELD LINE is a locus that is defined by a vector field and a starting location within the field. A vector field defines a direction at all points in space; a field line may be constructed by tracing a path in the direction of the vector field.

Field lines are useful for visualizing vector fields, which consist of a separate individual vector for every location in space. If the vector field describes a velocity field, then the field lines follow stream lines in the flow. Perhaps the most familiar example of a vector field described by field lines is the magnetic field, which is often depicted using field lines emanating from a magnet.

A complete description of the geometry of all the field lines of a vector field is exactly equivalent to a complete description of the vector field itself.

Field lines can be used to trace familiar quantities from vector calculus: divergence may be seen as a net geometric divergence of field lines away from (or convergence toward) a small region, and the curl may be seen as a helical shape of field lines.

While field lines are a “mere” mathematical construction, in some circumstance they take on physical significance. In the context of plasma physics, electrons or ions that happen to be on the same field line interact strongly, while particles on different field lines in general do not interact.

A vector field is a map f:R^n|->R^n that assigns each x a vector function f(x). In French, a vector field is called “un champ.” Several vector fields are illustrated above. A vector field is uniquely specified by giving its divergence and curl within a region and its normal component over the boundary, a result known as Helmholtz’s theorem (Arfken 1985, p. 79).

Flows are generated by vector fields and vice versa. A vector field is a tangent bundle section of its tangent bundle.

RHINOSCRIPTING: “tips’n tricks: or where to start from for rhinoscript beginners”

Option Explicit
‘code written by David Rutten ( within RhinoScript101_e
‘This script will compute a bunch of cross-product vector based on a pointcloudVectorField()
Sub VectorField()
Dim strCloudID
strCloudID = Rhino.GetObject(“Input pointcloud”, 2, True, True)
If IsNull(strCloudID) Then Exit Sub
Dim arrPoints : arrPoints = Rhino.PointCloudPoints(strCloudID)
Dim ptBase : ptBase = Rhino.GetPoint(“Vector field base point”)
If IsNull(ptBase) Then Exit Sub
Dim i
For i = 0 To UBound(arrPoints)
Dim vecBase vecBase = Rhino.VectorCreate(arrPoints(i), ptBase)
Dim vecDir : vecDir = Rhino.VectorCrossProduct(vecBase, Array(0,0,1))
If Not IsNull(vecDir) Then vecDir = Rhino.VectorUnitize(vecDir) vecDir = Rhino.VectorScale(vecDir, 2.0)
Call AddVector(vecDir, arrPoints(i))
End If
End Sub

Function AddVector(ByVal vecDir, ByVal ptBase)
On Error Resume Next
AddVector = Null
If IsNull(ptBase) Or Not IsArray(ptBase) Then
ptBase = Array(0,0,0)
End If
Dim ptTip
ptTip = Rhino.PointAdd(ptBase, vecDir)
If Not (Err.Number = 0) Then Exit
Function AddVector = Rhino.AddLine(ptBase, ptTip)
If Not (Err.Number = 0) Then Exit Function
If IsNull(AddVector) Then Exit Function
Call Rhino.CurveArrows(AddVector, 2)
End Function

very similar to “look at constraint”…


FEIDAD.ORG: The committee for the 2006 Far Eastern International Digital Architectural Design Award (The 2006 FEIDAD Award) has created this award to encourage the exploration and definition of architectural design in the digital electronic age.

THEVERYMANY – as a .net blog – is an open source and collaborative exploration platform investigating the field of computation and design. Proposed as a succesion of experiments via processes of precise indetermination using encoded custom tools (developped within rhinoscripting), is build as an non exhaustive library of computational tools. All the different renders presented are illustrating digital models which are 100% encoded/scripted; NO LINES ARE DRAFTED…

CODE AS MATERIAL – Sample codes and scripting tips’n tricks are proposed for users for hybridation, customization and uses. As within every bottom up processes and collective intelligence, feed back are highly welcome…


MARC FORNES – Architect DPLG – is the founder of THEVERYMANY,, a design studio and collaborative research forum engaging the field of architecture via encoded and explicit processes. In 2004 he graduated with a Master of Architecture and Urbanism from the Design Research Lab of the Architectural Association in London after having previously studied in France and Sweden. Marc’s work experience in La Reunion, France, and UK includes Zaha Hadid Architects, where he was the project architect, from competition to tender documentation, for an experimental Mediatheque in Pau. During his three years on this project he directed the material research and geometrical development for the largest self-supported carbon fibre shell to date. Marc has led workshops and appeared as a guest critic at the Architectural Association, The Royal College of Art, and the University of Pennsylvania. He continues developing his research and blog in New York City.


Log_01: final panels have been submitted for an exhibition currated by Philippe Morel ( which will open on the 20th February in Marseille.
‘ ———————————————————————————
Log_02: marc fornes / theverymany has been invited by Benjamin Aranda ( as guest critic for a final jury at UPenn on December 19th.
‘ ———————————————————————————
Log_03: marc fornes / theverymany has relocated in New York City:
Apt 10, 14 Schermerhorn street, Brooklyn, NY 11201


‘ ———————————————————————————
‘ Conway’s Game of Life
‘ Rules:
‘ The universe of the GAME OF LIFE is an infinite two-dimensional grid of cells, each of which Is either alive Or dead.
‘ Cells interact With their eight neighbours, which are the cells that are directly horizontally, vertically, Or diagonally adjacent.
‘ At Each Step In Time, the following effects occur:

‘ 1. Any live cell With fewer than two neighbours dies, as If by loneliness.
‘ 2. Any live cell With more than three neighbours dies, as If by overcrowding.
‘ 3. Any live cell With two Or three neighbours lives, unchanged, To the Next generation.
‘ 4. Any dead cell With exactly three neighbours comes To life.

‘ The INITIAL PATTERN constitutes the first generation of the system.
‘ The Second generation Is created by applying the above rules simultaneously To every cell In the first generation
‘ — births And deaths happen simultaneously, And the discrete moment at which this happens Is called a TICK.
‘ The rules continue To be applied repeatedly To create further generations.
‘ ———————————————————————————

‘ ——————————————————
‘ ——————————————————
Function newCell(arrCell,i,j)

‘ Check cell’s neigbours
Dim total : total = neighboursCount(arrCell,i,j)
If (arrCell(i,j) = 1) Then ‘———if cell is ON

‘ LONELINESS: a cell with less than 2 adjoining cells dies
If (total 3) Then newCell = 0
‘ STASIS: a cell with exactly 2 adjoining cells remains the same
If (total = 2) Then newCell = 1

Else ‘———if cell is OFF

‘ REPRODUCTION: an empty cell with more than 3 adjoining cells comes alive
If (total >= 3) Then newCell = 1

End If
End Function
‘ ———————————————————————————

rh4_060825_Game Of Life


The GAME OF LIFE is a CELLULAR AUTOMATON devised by the British mathematician John Horton Conway in 1970. It is the best-known example of a cellular automaton.

The “game” is actually a ZERO-PLAYER GAME, meaning that its EVOLUTION is determined by its INITIAL STATE, needing no input from human players. One interacts with the Game of Life by creating an initial configuration and OBSERVING how it evolves.


The universe of the Game of Life is an infinite two-dimensional grid of cells, each of which is either ALIVE or DEAD. Cells interact with their eight NEIGHBOURS, which are the cells that are directly horizontally, vertically, or diagonally adjacent. At each step in time, the following effects occur:

1. LONELINESS : any live cell with fewer than two neighbours dies.
2. OVERCROWDING : any live cell with more than three neighbours dies.
3. STASIS : any live cell with two or three neighbours lives, unchanged, to the next generation.
4. REPRODUCTION : any dead cell with exactly three neighbours comes to life.

The INITIAL PATTERN constitutes the first generation of the system. The second generation is created by applying the above rules simultaneously to every cell in the first generation — births and deaths happen simultaneously, and the discrete moment at which this happens is called a TICK. The rules continue to be applied repeatedly to create further generations.


From an initial pattern of living cells on the grid, observers will find, as the generations tick by, the population constantly undergoing unusual and always unexpected, change. The patterns that form from the simple rules may be considered a form of BEAUTY. In a few cases the society eventually dies out, with all living cells vanishing, although this may not happen until after a great many generations. Most initial patterns either reach stable figures – Conway calls them “still lifes” – that cannot change or patterns that oscillate forever. Patterns with no initial symmetry tend to become symmetrical. Once this happens the symmetry cannot be lost, although it may increase in richness.


The earliest results in the Game of Life were obtained without the use of computers. The simplest still-lifes and oscillators were discovered while tracking the fates of various small starting configurations using graph paper, blackboards, physical game boards, for instance Go, and the like. During this early research, Conway discovered that the R-pentomino failed to stabilize in a small number of generations.

These discoveries inspired computer programmers over the world to write programs to track the evolution of Life patterns. Most of the early algorithms were similar. They represented Life patterns as two-dimensional arrays in computer memory. Typically two arrays are used, one to hold the current generation and one in which to calculate its successor. Often 0 and 1 represent dead and live cells, respectively. A double loop considers each element of the current array in turn, counting the live neighbors of each cell to decide whether the corresponding element of the successor array should be 0 or 1. At the end of this process, the contents of the successor array are moved to the current array, the successor array is cleared, and the current array is displayed.

A variety of minor enhancements to this basic scheme are possible, and there are many ways to save unnecessary computation. A cell that did not change at the last time step, and none of whose neighbors changed, is guaranteed not to change at the current time step as well, so a program that keeps track of which areas are active can save time by not updating the inactive zones.

In principle, the LIFE FIELD IS INFINITE, but computers have finite memory, and usually array sizes must be declared in advance. This leads to problems when the active area encroaches on the border of the array. Programmers have used several strategies to address these problems. The simplest strategy is simply to assume that every cell outside the array is dead. This is easy to program, but leads to inaccurate results when the active area crosses the boundary. A more sophisticated trick is to consider the left and right edges of the field to be stitched together, and the top and bottom edges also. The result is that active areas that move across a field edge reappear at the opposite edge. Inaccuracy can still result if the pattern grows too large, but at least there are no pathological edge effects. Techniques of dynamic storage allocation may also be used, creating ever-larger arrays to hold growing patterns. Alternatively, the programmer may abandon the notion of representing the Life field with a 2-dimensional array, and use a different data structure, like a vector of coordinate pairs representing live cells. This approach allows the pattern to move about the field unhindered, as long as the population does not exceed the size of the live-coordinate array. The drawback is that counting live neighbors becomes a search operation, slowing down simulation speed. With more sophisticated data structures this problem can also be largely solved.

technics: first tests on V-Ray for rhino; here Global Illumination with very few settings…

credits: every experiment has its past, future and references… here partly challenged by Chris & Ben ( and some old demons from the AADRl background, theverymany is looking back at “Cellula Automaton” & “A New Kind Of Sciences” from Stephen Wolfram… that is a very Step01…


COMPLEXITY is the opposite of simplicity (“”)

Complexity in systems or behaviour is often described as what is “on the EDGE OF CHAOS” – between ORDER and RANDOMNESS… this work – based on particles systems – is a graphical transition with a current research on “Cellular Automata” starting from the “Game of life” rules… (coming!)


from 2D to “transferOntoSrf”; some sort of 2&1/2D…
‘ ——————————————————
‘ Function transfertPtOntoSrf
Function TransfertPtsOnSrf(arrPt, BBox, targetSrf)
Dim strpolyline, strPlanSrf
Dim tempUVPt
Dim sDomU_PlanSrf, sDomV_PlanSrf
strpolyline = Rhino.AddPolyline(Array(Array(BBox(0)(0)-10, BBox(0)(1)-10, 0), _
Array(BBox(1)(0)+10, BBox(1)(1)-10, 0), _
Array(BBox(2)(0)+10, BBox(2)(1)+10, 0), _
Array(BBox(3)(0)-10, BBox(3)(1)+10, 0), _
Array(BBox(0)(0)-10, BBox(0)(1)-10, 0)))
strPlanSrf = Rhino.addPlanarSrf (Array(strpolyline))
‘ ——————————————————
‘reparameterize the UV domain of the target surface to match the source surface
sDomU_PlanSrf = Rhino.SurfaceDomain(strPlanSrf(0), 0)
sDomV_PlanSrf = Rhino.SurfaceDomain(strPlanSrf(0), 1)
Rhino.SelectObject targetSrf
Rhino.command(“-_Reparameterize ” & sDomU_PlanSrf(0) & ” ” & sDomU_PlanSrf(1) & ” ” & sDomV_PlanSrf(0) & ” ” & sDomV_PlanSrf(1) & ” “)
‘ ——————————————————
tempUVPt = Rhino.SurfaceClosestPoint(strPlanSrf(0), arrPt)
TransfertPtsOnSrf = Rhino.EvaluateSurface(targetSrf, tempUVPt)
‘ Rhino.addpoint TransfertPtsOnSrf
Rhino.deleteObjects Array(strPolyline,strPlanSrf(0))
End Function
‘ ——————————————————


In mathematics, a Voronoi diagram, named after Georgy Voronoi, also called a Voronoi tessellation, a Voronoi decomposition, or a Dirichlet tessellation (after Lejeune Dirichlet), is special kind of decomposition of a metric space determined by distances to a specified discrete set of objects in the space, e.g., by a discrete set of points.

For any (topologically) discrete set S of points in Euclidean space and for almost any point x, there is one point of S closest to x. The word “almost” is occasioned by the fact that a point x may be equally close to two or more points of S.

If S contains only two points, a and b, then the set of all points equidistant from a and b is a hyperplane — an affine subspace of codimension 1. That hyperplane is the boundary between the set of all points closer to a than to b, and the set of all points closer to b than to a. It is the perpendicular bisector of the line segment from a and b.

In general, the set of all points closer to a point c of S than to any other point of S is the interior of a (in some cases unbounded) convex polytope called the Dirichlet domain or Voronoi cell for c. The set of such polytopes tessellates the whole space, and is the Voronoi tessellation corresponding to the set S. If the dimension of the space is only 2, then it is easy to draw pictures of Voronoi tessellations, and in that case they are sometimes called Voronoi diagrams.

The dual for a Voronoi tessellation is the Delaunay triangulation for the same set of points S.

Voronoi cells can be defined for metrics other than Euclidean. However in these cases the Voronoi tessellation is not guaranteed to exist (or to be a “true” tessellation), since the equidistant locus for two points may fail to be subspace of codimension 1, even in the 2-dimensional case.

Voronoi cells can also be defined by measuring distances to areas rather than to points. These types of Voronoi cells are used in image segmentation, optical character recognition and other computational applications. In materials science, polycrystalline microstructures in metallic alloys are commonly represented using Voronoi tessellations.

VORNOI CODE (from challenge last week at the office + Rassul…)
The Voronoi core has been developped by David Rutten (

Function VoronoiPolygon(index, datSet, BBox)
‘ this function creates a voronoi cell for agiven point in a set of points
‘ should probably be optimized so that it only tests points near the samplepoint
VoronoiPolygon = Null

Dim midPt, arrPt, vecDir(1)
Dim ptS(2), ptE(2)
Dim ChordLength, Border
Dim brdLines(), i, N
ReDim brdLines(UBound(datSet)-1)
ChordLength = Rhino.Distance(BBox(0), BBox(2))

arrPt = datSet(index)
N = 0

For i = 0 To UBound(datSet)
If i index Then
midPt = Array((datSet(i)(0) + datSet(index)(0))/2, _
(datSet(i)(1) + datSet(index)(1))/2, _
vecDir(0) = -(datSet(i)(1)-datSet(index)(1))
vecDir(1) = datSet(i)(0)-datSet(index)(0)
vecDir(0) = vecDir(0)/Rhino.Distance(datSet(i), datSet(index))*ChordLength
vecDir(1) = vecDir(1)/Rhino.Distance(datSet(i), datSet(index))*ChordLength
ptS(0) = midPt(0)+vecDir(0)
ptS(1) = midPt(1)+vecDir(1)
ptS(2) = 0
ptE(0) = midPt(0)-vecDir(0)
ptE(1) = midPt(1)-vecDir(1)
ptE(2) = 0
brdLines(N) = Rhino.AddLine(ptS, ptE)
N = N+1
End If


Border = Rhino.AddPolyline(Array(Array(BBox(0)(0)-10, BBox(0)(1)-10, 0), _
Array(BBox(1)(0)+10, BBox(1)(1)-10, 0), _
Array(BBox(2)(0)+10, BBox(2)(1)+10, 0), _
Array(BBox(3)(0)-10, BBox(3)(1)+10, 0), _
Array(BBox(0)(0)-10, BBox(0)(1)-10, 0)))
Rhino.SelectObjects brdLines
Rhino.SelectObject Border
Rhino.Command “-_CurveBoolean _DeleteInput=No _CombineRegions=No ” & _
Rhino.Pt2Str(Array(datSet(index)(0),datSet(index)(1),datSet(index)(2))) & _
” _Enter”, vbFalse
‘ delete lines
Rhino.SelectObjects brdLines
Rhino.Command “-_Delete”

VoronoiPolygon = vbTrue
End Function

%d bloggers like this: