Find the "right" tangential lines between a series (chain) of circles

Hello,

I want to connect a series of circles (derived from points of a curve) with their tangential lines “as if I were stretching a cord around a row of pulleys”. How do I find out procedurally which tangent is the right one for the respective circle? I cannot wrap my head around if this is possible or not?

Happy for any help!!
P

tool_blurb.gh (15.2 KB)

Hello
for sure it is possible, it is named “Rubber Band”, I added it to Nautilus. See this discussion

Wow this is fascinating! Also great plugin in general!!

Would it be possible to make this work with non co-planar circles?

My goal is to create a tool to simulate 35mm film running over a series of pulleys randomly placed in a space. The axis of the pulleys is the cross-product of the incoming and outgoing vector. My current approach was tilting each circle into the plane of the previous one to calculate the tangential points and then rotating it (with the points) back. But I did not get it right.

Here is what I have:
tool_4.gh (20.5 KB)

You didn’t internalize your curve,
but my tool doesn’t really care of the circle orientation, if centers are on a plane it must work. Also don’t forget to cull duplicates points

1 Like

Unfortunately, in my case the points are not (and cannot) be in one plane but are scattered through the space…

If you want some help I think it could be best you post what you have. You posted the script but not the data.
It could also helpful to have a bit more references. Because at the moment I just think of some publication on planes. trajectory in 3D.

1 Like

Are you rigging a sailboat? As this model demonstrates, pulleys (the circles) will find equilibrium planes based on tangent tension that is likely different from the planes used to create circles?


rigging_2024Oct28a.gh (7.9 KB)

Maybe Kangaroo could solve it? Looks complicated.

2 Likes

Ofc! Thanks for both of your responses. The context is that I have to build a tool that helps me to plan the guidance of 35mm film through a space. I specify deflection points (in the form of control points on a curve), each of which represents the center of the deflection rollers. 35mm film is stiff in one direction, but can be bent across the surface, which means that torsion along the longitudinal axis must be used to reach each point.

My two big problems are a) finding the “tangent” between two non-coplanar circles and b) the “rubberband” problem, which you have already solved perfectly with the plugin (in a plane). The idea to solve point a) was to tilt the current circle into the plane of the next circle to find the points and then tilt it back again. But I am uncertain if I am on the right track.

tool_5.gh (13.9 KB)
tool_5.3dm (2.4 MB)

Nice challenge :slight_smile:

Yes and as it is standard geometry with some cross vector and as all circles have the same radius … just some vectors. Look at the differents lines they are the axis of plane, inner axis …


@Paul36 it is always better with data as the answer is greatly correlated to the input data.

tool_5_LD.gh (15.0 KB)

1 Like

Allowing the film to twist might simplify things. I quickly modified my model to add cylinder rollers (and scale) but I think rollers don’t help solve the problem… :thinking:


rigging_2024Oct28b.gh (12.8 KB)

Circles are still the key for obtaining tangents, eh? What if each circle is copied to its two adjacent vertices in the same plane, for purposes of solving tangents…?

Oh, I see that @laurent_delrieu has it already :interrobang: :+1:

I didn’t use the circle to get the tangent as my assumption is that all circles are the same I used the lines.

Oh wow, this is amazing. I will need sometime to go through this one by one to understand every component. One issue I see here is that it sometimes creates “unnecessary” torsions like in the image here:


tool_5.3dm (2.4 MB)

Also, for the final tool, I need to be able to somehow specify the pulley diameter for each point individually (or set it once, but be able to override it in special cases). But I don’t know what the best way would be to store (or input) this data…

I added the purple group but won’t pursue this any further.


rigging_2024Oct28c.gh (27.8 KB)

That is the easy part :bangbang:

The idea here is very basic, I consider just the summits and on the plane containing the 2 curves relying the summit. “Middle” angle is the sum of the 2 lines angles. Normal is the cross vector of the 2 lines vector.
There is no other logic.

1 Like

How would you approach this? Like what is the best way to add user data to individual control points? Ideally I would set the base radius one time, but then have the option to select an individual control point and set a unique radius for it. User data can only be used if I use single points rather than a polyline (which I would like to stick with as it makes it easier to understand the order).

In order to suppress the distorsion measure tha angle between the 2 lines and flip if angle is more than Pi/2


tool_5_LD.gh (21.8 KB)

And don’t forget there is NO tangent curve for your circle.
A tangent curve of a circle is on the plane as the circle !!!

1 Like