Hello - I’m trying to model an ‘8 shaped ramp’ as in, two helicoidal ramps connected to each other in an 8 fashion (when seen from above) - it’s easier to draw then to write about (if this shape has a mathematical name/definition, let me know, I couldn’t find it).
I’ve caded a rough version on Rhino - but I’m not sure how to define it in Grasshopper so I can play around with the parameters. I would start with two helicoidal ramps, but then need to cut them and (loft?) a surface crossing between them. In the Rhino file the ramp is wobbly - ideally it would be a smooth transition between both helices. Maybe an Euler spiral? I’m not sure.
8-shaped-ramp.3dm (516.0 KB)
Any help much appreciated! Even if it is just the right terms to describe this shape - I couldn’t find it in the forum already but might be missing the keywords.
The way I use to build those is to sweep1 along an arc from a point to a straight line with Global Shape Blending on.
Then sweep1 a perpendicular line with Roadlike on.
This is not possible with native Sweep1 in GH.
Maybe have a look at Flexibility.GH plugin on F4R.
Or code your own Sweep1 with the Brep.CreateFromSweep method…
Another way is to build section lines using an expression and loft those.
Useless Zebra fancyness :
I ignored your Rhino file (sorry, unintended) so ignored scale. I started by manually drawing a control point curve of a figure 8:
I set the curve seam to the center point (self-intersection point), divide the curve and moved each point up in Z, passing through a Graph Mapper to ease the slope at the ends. Then used pFrames to create section curves for the roadway.
This version is closer to the size and position of your Rhino file. The gray group uses two points that are the centers of your circles to create a figure 8, similar to what I expect. I used approximate (by eye) dimensions for radii and height.
It offers three different ways of creating the ramp (loft, Swp1 and Swp2) but all of them struggle to get a smooth surface due to the tight steep turns. Exploring different values for the ‘Count’ slider input to PFrames is useful to some extent but the best results will come from moving the points further apart (‘Move Apart’ slider in blue group) and increasing the radii values.
P.S. You can reverse the two base points and/or flip the curve direction of the figure 8 curve from the gray group (‘Crv (figure 8)’) to modify the ramp direction
Hi @MGV ,
There is a figure-8 polar curve called a Leminscate that might be worth looking into for this. You can use the parametric equations for the XY coordinates, and just increment the Z to create a type of ramp:
Once you’ve made the curve, you can do whatever with it really. In this case, I’ve just made perp frames, aligned these and then created lines of a certain width to loft through.
It might not be what you need, but hope this helps
Lemniscate Ramp.gh (10.7 KB)
thank you Joseph! I’ll study your definition - and thanks for giving it a second go to match my size - this is very thorough
Thank you John - so that’s what this is called! It definitely helps.
Looking closer at your definition - the outline of the ramp gets a bit wonky - It seems to happen at the last stage, when constructing the section lines for the Loft. Becoming more obvious the higher you go.
I’ve found a way around it by offseting your curve - before moving it up - and then evaluating it with the t from PrepFrames - to then move everything (curves, points) - and Loft (hope this makes sense, have a look at the file) - it makes a smoother ramp (not a flat one but that’s not important for me). it’s a dirty definition though - a bit temperamental once you play with offset/height/diameter. I wonder if there’s a more stable way to do it.
ramp_2023_Aug16c-re.gh (37.0 KB)
Love this - works very smoothly -
I wish I could control the outline/diameters more (like in @Joseph_Oster definition) - I’ll see if I can merge them into one deinition.
I am not an architect but seems you need to add a few parameters beside the smoothing, start and finish by range 3.5m with a sine wave and the inner teta degree based on radius and default speed in m/s.
If you want to control the width, you can use the parameter along the curve by using reparameterize, then manipulating these in some way, for example with a graph mapper similar to how Joseph has shown with the ends. It’s all quite UNStudio.
Lemniscate Ramp 02.gh (9.3 KB)
Right -yes. I didn’t explain myself well - I am trying to control the outline and holes so it looks like this - two circles overlapped with a tangent mid-section towards the other circle. Instead of the more swoopy outline from you definition.
Ah ok, so tangent lines as per Joseph’s definition. Understood. The downside is that line to arcs means lack of continuity of curvature unlike the lemniscate - so when you offset the curve to the sides, the gradients of the two edge curves will not be smooth - but granted there are benefits also of course in making it out of rational curves.
Maybe you can play with this one (which also uses the two tangent lines from the circles) and see if you can get the parameters you need to adjust at the circle centres, to be honest I’m not quite sure anymore exactly what is required.
(black curve is made from arcs and lines)
(another version just tweaking the widths using a sine wave)
arcnlineRamp01.gh (14.2 KB)
Not sure what you mean by “outline of the ramp”? Maybe the edges? I don’t have Pufferfish so can’t see your definition.
But yeah, the ramp does get wonky, primarily due to the small radius I believe (as I said before). I don’t have a good sense of scale on this ramp. Is it for driving? One lane or two? What units are you using? (meters, feet, mm?) Are the ramp constraints realistic?
There is a lot to read this morning but I don’t see any breakthroughs. I just added bank angle (yellow group) so the ramp twists and drains toward the two circle base points. Seems to help a little but again, the best way to make it smoother is to increase the radii and perhaps move the points apart.
Unfortunately, this model is a little unstable with regard to direction and bank angles when the radii are changed. It’s tempting to rewrite the gray group to make sure the figure 8 has consistent curve direction and whatever else is needed to make sure the result is predictable. Instead of two radii which requires TweenCrv, it would be better to have one radius for the centerline and ramp width.
Morning Joseph - yes, I meant the edges are not smooth. Here’s my definition from yesterday without pufferfish. Still not perfect - I want to make the width of the ramp regular rather - but close.
ramp_2023_Aug18-no-pfish.gh (44.8 KB)
This is not a ramp for humans or cars - it is a part to evacuate fluids (so it doesn’t need to be walkable/driveable through - or flat) and to be fitted in a bigger assembly - but it is real, and in mm. However as long as the proportions are right - it can be scaled up and down, of course. I used the word 'ramp’as I thought it described the shape well.
I think the way @johnharding has build the figure 8 is quite nice so I might bring it into the final definition.
Thank you again for your help.
Hello - yes I understand when build with arcs it looses the smoothness of the lemniscate, I’m just trying to see if I can make it work with a rational curve outline. If I don’t find a way, the lemniscate is a very nice plan B.
Thank you for your definition - I think I can adapt it to get what I want. There’s no requirement for the ramp width to change or for it to be flat. Just needs to be smooth 8 shaped and repeatable (so that I can stack several 8 shapes together. I think I can take it from here.
→ little update here - last step is putting John’s curve in so it is a little bit more stable. But now it behaves like I wanted and has a smoother outline/equal width across ramp.
ramp_2023_Aug18b-no-pfish.gh (41.5 KB)
I’m a little surprised that it’s so difficult to get a ramp that isn’t “wonky”, though again, I believe the dimensions and small radius value of the inner circles play a role.
I rewrote the gray group to reliably generate a figure 8 base curve based on a plane, and ‘Apart’ slider (182.5 units between center points) and two radii.
Then rewrote the yellow group to implement a smoother bank angle. As you can see by the curvature graphs (dark gray group at the bottom), they look better using small values of ‘Count’ but are more accurate in top view using a minimum value of 21 (which yields 22 pFrames).
Oh So the easing I did of slope and bank angle at both ends of the ramp aren’t necessary?
Uoah @Joseph_Oster , super neat! I agree it depends on the proportions between circles-distance, when forcing the centers too close together + too “thick” of a ramp, it gets ugly. But this works very nicely now, much more stable.
I don’t need the easing of slope for my application in particular but it’s nice to have it - if someone uses this definition in the future for a car/human ramp.
Thank you again
Also there’s now a YT tutorial for lemniscate ramp definition if anyone is interested