# Reciprocal

Dear @DanielPiker,

I would like to ask if it possible to make line-line goal in such a way that the line do not slide between each other, but keeps original position as close as possible.

To make line-line goal work I need to scale them, so original red points does not exist in the input.
But I need them to indicate the original position of lines. Ideally the lines would not slide between each other but rotate. I know that the curvature will change, but with current setup I cannot use larger size sticks, it is only possible to make a relaxation if radius is relatively small or close to original curvature distortion.

I attach the files for the setup I have.

The problem:

I wish to keep these point as close as possible (anchor points goal does not help):

Files
Relaxation.3dm (10.5 MB)
Relaxation.gh (18.8 KB)

One possible solution is to mix line-line goal with Curve on Point goal, that keeps close to initial position, but the problem here is that you cannot prevent flipping curves/ moving over each other since the input lines for line-line goal are not scaled:

So the question I have is there any way to use line-line goal and prevent particles flipping over each other without scaling the input lines?

I’m not sure I completely follow, but is what you need something like this combination of the 2 goals:

• one that pulls the point at parameter ta on line a to the point at parameter tb on line b.
• one that tries to make a pair of cylinders tangent by making the shortest vector between a pair of lines a given length.

lineline_at_tangent.gh (14.6 KB)

Here it is done with 2 separate goals. The LineAt_LineAt one tries to make the actual lines touch, so it needs to be weak relative to the LineLine goal making the cylinders tangent.

I guess it should also be possible to do this as a single goal.

Dear Daniel,

Could you help me to adapt line-line goal so that it attracts two lines till certain distance?

I would like to specify the target distance between points on lines, so that the distance does not become 0 but user specified.

@DanielPiker I’m trying to run the “ReciprocalK2.gh” file posted above, and there is a missing “Reciprocal” component that is from Kangaroo 1. Is this available somewhere?

Hi @thedriftery
Here’s a version that uses only Kangaroo2 without needing the old reciprocal component:
ReciprocalK2_2.gh (22.0 KB)

1 Like

Hello @DanielPiker
Thank you a lot for the script, I have 2 questions:
Premise I am new to grasshopper,

• How could I extrude the final lines not in a round shape (pipe tool) but squared? ( like in the picture below)

Thank you

Fabrizio

Hi! Im trying to use this one but im fairly new to GH. What type of input does this need? is it possible to just connect a mesh like with the reciprocal demo file for kangeroo0.99?
Thanks!!

Hi Daniel,

I am using the latest version of Rhino 7, and when i am trying to open the code i get an error component at the C# script : 1. Error (CS0246): The type or namespace name ‘KPlankton’ could not be found (are you missing a using directive or an assembly reference?) (line 13). Could you please help me out with findin the component. I have searched online but cant find a solution.

Thank you

Hi @Sara_R

The assembly reference location for KangarooSolver needs to be set on the scripted components.
That file above was shared back when Rhino 7 was still a WIP, so the standard folder location was different.

I just resaved with it set to the standard folder path
`C:\Program Files\Rhino 7\Plug-ins\Grasshopper\Components`
If you have Rhino installed in the usual place this should just work
ReciprocalK2_2.gh (26.2 KB)

If you’ve got Rhino installed somewhere different, you need to right click the scripted component, ‘Manage Assemblies’, Add, and locate the KangarooSolver.dll on your computer.

it works thank you!

1 Like