Create a path with slope


I am currently designing an elevated path (kind of a bridge) in a forest park, we need to have a slope that might be variable but can’t be more than 5%. Does any one have thoughts on how i could do that?


If you are in the coding bandwagon that’s very easy (using classic Recursion on a Brep or Mesh (waaaaay faster)).

If not there’s an indicative (requires a different constrain [the slope of yours]) demo using Anemone (forgot the name … but maybe is “drainage”?) in the Anemone related examples.

It’s easy to measure the slope and draw warning symbols when it exceeds some limit, however fixing an existing path such that it remains within some limits is much harder. This is primarily because there are so many different ways of changing a path curve, and also because because lowering the slope in some section may increase it in adjacent sections. So this almost certainly requires an iterative approach. Which in turn suggests either custom coding or Kangaroo.

Maybe this is applicable. A couple of years ago I used Anemone to come up with a little creature that chews its way up a surface at a constant slope. It was pretty accurate, especially for smooth, non-topographical surfaces. Since you’re designing an elevated path, you could offset your original surface and apply the code to that.

Let’s avoid that (time). Imagine a shortPath from/to (if they are inside the face). Then using that as a U axis … create a var search region and spread some points (as shown are non uniform random … but the fastest way is to do a “distorted” 2d “base” grid and use ccx Ray3d against the face) . Avoid at any cost to split the face and spread pts on that (takes years to finish), hence the ccx Ray3d.Then do a "custom " proximity by excluding neighbors that yield a no-no slope (and/or connections that intersect with the brep [slow], and/or connections that yield a max distance greater than the LBS/foundation[I guess via piles] acceptable one [for doing the thing in real-life] etc etc etc).

Then test graph’s VV connectivity for islands (easy via recursion on indices and very very fast [1-2 milliseconds for 1K indices]). If from/to belong to different islands > either enchance the rnd point collection or stop and do something else (a far better option I think).

If from/to belong to the same island … just do a Dijkstra routing.

For the moment only the general set-up is done (no custom proximity [slope or other filtering]). If finished I’ll post it here (minus the internal Dijkstra C#).

Hi @PeterFotiadis

Can this work with a slope less than 2.8624 (1:20)?

Hard to see why not (If for any x.y pair of coordinates there’s only one pt on terrain - if not … well … becomes a bit compliceted). But I confess that I forgot completely this 2Y old case (and any detail related with the strategy used).