Generating a catenary of desired height between 2 points iteratively

I’ll assume you posted this for feedback so here is mine.

missing

  • You don’t need a plugin to round to decimal place.

  • Hidden wires in a simple model only make it harder to understand.

  • The Python component isn’t necessary.

  • Most serious of all, it appears that your model depends on the midpoint being directly inline between the end points? Perhaps even directly above the Average of the two end points? If that is the case, the model would be better constructed so that a bad model is impossible. You could move the Average point vertically to “construct” the midpoint, for example:


catenary_2020Sep28b.gh (20.4 KB)

Otherwise, it’s too easy to break. When I moved that midpoint slightly, the code went into an infinite loop that required halting Rhino. That’s bad!


catenary_2020Sep28a.gh (20.1 KB)

The white group is the conventional way of using the Catenary component where length is a parameter and height is a result. But I recall from my college summers working on a line crew that I was able to calculate how much additional wire (~6") had to be added to a very long span to lower it a given vertical distance. I can’t be bothered to figure that out now but I’m sure there is a way to get length from desired height.

In fact, your model appears to assume that the end points have the same Z coordinate? If not, the model hangs (bad!). That isn’t necessarily the case in the real world (power poles at different elevations on either side of a valley, for example). The white group doesn’t require the end points to have the same Z, though the midpoint is no longer the highest point on the curve, so that needs to be changed…