# Loop Translate and Geometry Intersect

Dear All, Shown in the below images I have a simple script which I’d like to repeat by a pre-defined integer. The script translates a circle from a surface point, creates a circle at the origin of the translated point and defines intersection points with the surface. The process is repeated with newly found intersection point(s) translated and intersections with the surface determined. I want this process to be repeated until the sum of translations exceeds a set value. Translating by fixed depths and intersecting with specific radii determine a good approximation of consistent gradient paths down a surface. The precision of the defined gradient is defined by the translation depth and radius thus I’d like to toggle between the two parameters and allow Loop While node to automate the iteration rather than copying multiple versions of the same nodes.

At this point I’m not looking at doing any thing complex to factor the Target Points location, I will just be using the difference in elevations between the Start Point and Target Point to determine how many translation iterations that are required.

When a circle has two intersection points with the topo surface, how do you determine which point to fetch?

The objective is to determine the path with a consistent gradient?

Just obtaining the point of intersection of the circle and topo surface is not going to help (I think)

Might require a few more steps/evaluations.

Dimitar, when the circle and topo produce two intersection points I intend to use both so I am left with 10’ or 100’s of possible paths to choose from, in which case I will filter by shortest length or use human judgement to pick a favored path. The next solution I’d require is to define all paths using the pre defined start and end points, lines would be formed from an origin point and resulting intersection points, i’d then join them to create polycurves. An example of my end goal is shown below (grasshopper derived).

Vikram, I agree the gradient won’t 100% match what is desired by by reducing the radius and translate ratio it can get within a 10mm tolerance which is good enough for the intended use. The example shown used a much larger circle radius than I’d intend to use so that I can easily demonstrate my principle.

What about cases where the circle fails to intersect the topo or when the topo is parallel to the plane of the circle? There are a lot of corner cases in this workflow and it will be quite challenging to come up with a solution that uses only nodes. You’ll most likely be better off with a scripted approach like DesignScript or python.

Alternatively, since you’ve already solved this in Grasshopper, you could send your topo mesh over to Rhino with the MantisShrimp package.