Grasshopper

algorithmic modeling for Rhino

Periodic boundary conditions with TranslationLock - examples

While Kangaroo is all about applying the laws of physics to digital modelling, there are times when it can be useful to be able to bend these laws a bit.

(I've written about some other examples of this before here: http://spacesymmetrystructure.wordpress.com/2011/05/18/pseudo-physi...)

If we want to design repetitive structures, we might want to be able to assign periodic boundary conditions to some structure to enforce translation symmetry. For instance, a long row of connected arches or vaults, which we want to be identical for ease of fabrication.

We could simulate this by adding many identical vaults in a row, and as we added more, the ones near the middle would get closer and closer to being identical. But they would never quite reach the point of being truly identical, even as we added hundreds of copies, and this would be very inefficient for large simulations:

One way around this is to take some points on one side of our structure, and lock them to some points on the other side of the structure using the new TranslationLock component:As far as the physics engine is concerned, each pair of points linked in this way is then actually just one point. It is as though the space itself has been wrapped around to join one side with the other.

Anyone who has played the game Portal will be familiar with a version of this concept (or for the older ones among you - asteroids).

Translation locks can be applied in any direction, and combined with any of the other forces. However, a few things to bear in mind:

-Be careful not to double up forces unintentionally. For instance, if you are adding a gravity load to the nodes of a catenary arch, and you want an equal load on every point, add only half the load to the locked particles, because when joined together these get combined (or equivalently you could add the full load to just one particle of the pair).

Similarly for springs - if you are smoothing a periodic tensile mesh using springs, be careful not to add the forces of the boundary springs twice.

-If you are using this for structural form-finding, remember that space we inhabit in the real world doesn't have these periodic boundary conditions (at least not on everyday scales!), so when you build it you will need to provide appropriate balancing forces at the ends.

-For forces which act on more than 2 particles, such as bending or Laplacian smoothing, you need to lock an appropriate number of particles on one side to those on the other side. Sometimes this may require adding 'ghost vertices'.

For example, here we model a periodic elastica curve:

This is achieved by applying a translation lock to the pairs shown by the red and blue arrows.

(note that the particle at the end of the blue arrow is 1 segment beyond the end of the curve)

One possible use of this tool would be the form-finding of periodic minimal surfaces (following the example of the great Surface Evolver by Ken Brakke). His site has many more great examples of these:

Generating these surfaces in a way that they remain minimal across the boundary would be very difficult without this periodic constraint.

Perhaps more interesting from a design perspective is the possibility to move beyond pure mathematical surfaces, and generate more free-form repeating units, but still preserving continuity across the boundaries, something like the work of Erwin Hauer:

Views: 5744

Attachments:

Replies to This Discussion

The converting takes such a long time.

http://www.tudou.com/programs/view/Dk3oOq7nPOI/?lvt=4&resourceI...

Hi panhao,

By the way, it's really a great piece of work! I guess it's somehow like "multiple blend" tool in VSR shpe modeling, a useful plug-in for Rhino?

Hi Daniel,

I have been trying to come up with a way to use the translation lock component for repeating patterns that dont follow a rectangular/cubic repeat.

F.e. the P-surface type example you posted

could be broken down into 24 sections of the same repeating tile

Would it be possible to supply a plane as orientation for each point set to deal with this?

Thanks,

Mathias