Catenary Dome without Kangaroo
When thinking about serious and specific topics, I suddenly find myself looking back at the basics again. Catenary curves, are not the most beautiful one among those mathematical forms found in nature. However, it still tells us a lot about structures. The name apparently comes from catenaria, the Latin word for “chain”. This Grasshopper code was actually an example from our book 10 years ago (link here). It seems catenary curves could potentially be used in a type of dome design, especially if you want to avoid using Kangaroo, where unnecessary.

According to the internet, the mathematical expression of this curve is as follows.

Since Grasshopper already gives us a built-in Catenary component, I never questioned it before. But suddenly, I started wondering whether this component was actually drawing the curve correctly. The Grasshopper code below draws catenary curves using the formula above. Maybe in the future, we might need to model these curves in an environment other than Grasshopper, so it’s always beneficial to keep studying the fundamentals rather than just memorizing ready-made components. When inspecting the formula, the first thing that catches the eye is an e value. This is called Euler’s Number. Grasshopper provides this as a ready-made component. Since I don’t know how it is calculated (for now), we are incorporating the built-in e value into our formula. As for a, it might look like the length of the chain. But it isn’t. It acts as a kind of tension force; as it increases, the curve flattens.

Ultimately, I tried to fix both ends and compare it with Grasshopper’s existing component. The formula got quite long. In its final form, this formula is essentially a simple explicit curve graph, but it works like this: By turning the equation into the form above, we fix both ends. In the original equation, since the resulting y values depended not only on x but also on a, the curve shifted up and down. To fix both ends like a chain, we added an L value to the function. This way, in our example, when we plug in 0 or 10 for x, the y value drops to 0.



Unfortunately, chain length input cannot be entered into my definition. However, we can observe that Grasshopper calculates it correctly. Instead of going through all this, you can safely use the ready-made component, after all.






