import OSM

OpenStreetMap data for Lausanne I was testing out the Elk plugin for Grasshopper some time ago (back when only the initial realease was available and found the ability to import data from OpenStreetMap incredibly useful. Not only is this an opensource database, but it’s global coverage is pretty thorough saving the trouble of trying … Continue reading

Medial Axis

The medial axes and vanes of various shapes One of the first grasshopper definitions shared at Daniel Piker‘s SpaceSymmetryStructure blog was a file for calculating the medial axis (or topological skeleton) of a curve: the set of points with at least two closest points on a curve boundary. This definition was more accurately a voronoi … Continue reading

Auxin Flux Canalisation

Each layer illustrates a change in step length Auxin Flux Canalisation is a an algorithmic process developed by Adam Runions at the University of Calgary Algoritmic Botany group to model the morphogenesis of leaf venation. The key to the process is a simulation of the distribution and flux of auxin -a plant hormone- whose distribution … Continue reading


Diffusion Limited Aggregation Diffusion Limited Aggregation uses the mechanics of a random walk causing particles to stop moving when they come within a certain distance of an already anchored point. Connecting points to their anchors creates a branching organization with a density and connections that resemble many natural growing patterns. This version includes the possibility … Continue reading

Solar Incidence

Mesh incidence analysis Ted Ngai’s solar incidence definition has been the standard grasshopper definition for calculating solar position and sun angles since it was released over 2 years ago. Since that time, Grasshopper has released update after update and has switched from OpenNurbs to RhinoCommon for script components. Ngai’s definition is not significantly affected because … Continue reading

PQ Hybrid

Discretization of complex surfaces into continuous planar quadrilaterals is not a terribly complex process; however, it is very sensitive to small adjustments in the initial conditions, so optimizing the panelization is. The simplest solution is to iterate many, many times over the entire mesh searching for an equilibrium. This definition is not concerned with optimization … Continue reading

BRep Unfold

When working with surface panelizations, I find physical models easiest to construct when the panels are grouped into linear strips which can be unfolded flat and lasercut. Grouping panels into strips reduces the number of pieces to organize and to assemble. Additionally, folded seams are usually more precise when working at small scales than glued … Continue reading

Quaternion Rotation

As always, Paul Bourke has some excellent information on Quaternions. Additionally some examples of Quaternion operations represented in code can be examined at the Game Programming Wiki. This definition is primarily concerned with using Quaternions to represent axis-angle rotation and has two methods: one rotates the point by a given angle, the second rotates the … Continue reading

Swarm Shelving

Shelving furniture for an academic office based on vector swarming simulated in Grasshopper using VB.NET with controls for density, dimensions, and bundling behavior. The interior face displays the same vector field as the exterior, but with greater depth and width to create functional storage space. This subtle divergence can be read from the exterior in … Continue reading

Self-bracing Panelization:

Self-bracing PQ-dominant mesh of a low relief surface generated and unfolded in Grasshoppper3d using the BRep Unfold definition in Grasshopper. Support spans are created within the dimension of the face when distance and angle to base surface permit to prevent material waste. The transparency of the screen is a side-effect of its geometry. flickr