Random Topography and Surface Analysis – Example 4.1


Moving on from 2-Dimensional patterns, these next examples show some tips on how to create and analyze surfaces in Grasshopper and in Rhino. Some can be made with control points (think spot elevations on a survey) and some can be created using curves (such as site sections, or contours). This one is created with a random grid of points that move up and down in the Z direction. While most people wouldn’t design with this, i was working on a competition once and we needed some implication of topography, but didn’t have time to actually design the topography. So my boss recommended this method to create contours. (We lost the competition, but for other reasons) The principle of using points to create a surface is sound, however, and grids of survey points are how most terrains are documented anyways, contours are just a representation but aren’t factually accurate. This script will extract contours from the surface we create, though, which is quite handy.

Step One – Create a grid of points. This time move them with a random number generator following the logic of example 1.3 but this time using the “Z” direction vector component (up and down)

Step Two – For this example we will use the SrfGrid component in Grasshopper. Be aware this only works if you have an exact grid of points. You will need to try other methods if you have points arranged otherwise. What this needs is the points and the dimension of the “U” value. It can’t figure this out on its own but it is equal to the points in the “Y” direction in this particular case.  And that’s it!

Optional Step Three – So once we have our surface from this or any other method, it is quite easy to construct contours. The hardest part is finding which of the many contour components is the right one (there are four components called contour, and I often select the wrong one). The one we want has an “S” at the top for surface… if you get one with “C” for curve its the wrong one. You input your surface, a point. Any point will do, i usually just put in a dummy point at 0,0,0. Next we need to tell a direction. In this case Z (up and down). Well, shouldn’t grasshopper know contours are up and down. Yes, but there are many very useful opportunities for doing contours in the X or Y direction. Contours every 100 m = Site sections every hundred meters! Also, I have also seen site models where the sheets of chipboard are cut vertically instead of horizontally. These look very nice AND you can have a laser cutter cut out your buildings at the same time as the ground. I will find a picture of this and post it. The last step is your interval. Be careful this isn’t too low, or the computer might crash. Another very handy application for this is when you are cutting a site model and the thickness of a sheet of chipboard equals 1.37m or some other supper odd number and your contour interval from your CAD file is 1m A solution rather than tracing the contours at the odd increments (something I’ve done) is to quickly translate your CAD contours to a surface in Rhino (i will show this in Example 4.2) and use this tool to extract contours at the appropriate interval.

Very Optional Step Four – Writing your own scripting is somewhat advanced in Grasshopper so if you are starting out don’t try it, but you can find some Visual basic components people have written to trace how a drop of water would move across a surface. The one I use is based on a scripting algorithm by Woo J Sung and might be still downloadable from his blog. If this doesn’t work, you might be able to find one elsewhere, or write one yourself! Anyways, this particular script you input random points onto the surface (like raindrops) and send them flying! So worth looking for if you can get it.


Here is a screenshot of the GH script. You wont’t be able to get the VB component to work unless you program it yourself or find one to download online. I can’t post it here since I didn’t write it.