algorithmic modeling for Rhino
A while back, someone asked about a constant slope spiral ramp on an hyperboloid, http://www.grasshopper3d.com/forum/topics/hyperbolic-spiral
which I solved to a pretty high accuracy using calculus (including an error) but the method did not lend itself to many similar shapes, especially those that are not surfaces of revolution.
Here is a technique using Anemone that finds a solution by climbing up a path determined by a teensy-weensy semi-cone. These are the steps:
1) Define a small semi-cone having the desired slope.(base radius/height) The smaller the better but it does begin eating up computing power.
2) Place the cone at the start point and find the intersection with the surface. Since the cone is small, the curve of intersection is almost linear and at nearly the same slope as the cone. Move the cone to the end of the intersection curve, reorient it based on the surface normal at that point, rinse and repeat.
3) Continue until the intersection event gives a null. The loop outputs the end points of each little intersection curve, so at the end, the list is flattened and they are interpolated into a spiral.
In the code I included a calculation for the percentage difference between the min and max slopes calculated, using a neat technique by David Rutten and the results go from a few hundredths of a percent for a pretty smooth surface to 4 to 6 percent for something more topographical. YMMV.
Assuming your machine is as slow as mine, it's cool to watch the path climb up and around the surface - if it's not, you don't know what you're missing! but to speed things up, check ''Output After Last' in the Anemone End Loop.