Hi @DanielPiker

I saw an old thread of yours with kangaroo 1 about Reciprocal frames using pipes:

Is there any example on kangaroo 2?

In the example sticks also slides too much. Could you give any recommendation how to setup Reciprocal frames?

I read few papers from Peng Song.
The rotation of edges by average normals is clear for me. But how to overlay sticks cleanly not so clear:
I tried to rotate lines by line normal plane, but it is not physically correct. So I assume there must me some iterative way to shift lines.

(Daniel Piker) #2 (20.1 KB)

Help! How do you build reciprocal frame structures with Rhino and Grasshopper?
(Daniel Piker) #3

As for stopping them sliding too much - adding some very weak anchors is one way that can work if you start out reasonably close to where you end up.

It should be possible with springs as well, though it gets a bit complicated adding points along each strut and keeping them straight.

I guess the ideal would be another goal similar to this line-line one, but instead of pulling together closest points it pulls struts along their axes to make a point at a given parameter on one meet a point at a parameter on the other. Potentially with the possibility for this target parameter to shift along in a plastic manner.
This is similar to something I’d thought about before for friction in knots/weaving.


Thank you:)

I am wondering if line line goal could keep attracting closest pairs of lines too not only using repulsion. When lines radius is too small it would pack them.

(Daniel Piker) #5

That’s exactly what the scripted goal in that definition is doing - the standard line-line goal checks if the cylinders overlap, and only applies the force pushing them (to the distance at which they would be tangent) if they do. To make it do attraction as well, I just skipped that check, so when they’re too far apart it pulls them back together.


Thanks, it seems I chose collision pairs in a wrong way. I tried to collide all adjacent line pairs but it must be two pairs per line segent. - > two goals per line. Now it works perfectly:)


Dear @DanielPiker,

I would like to ask again about line line collision goal.

Would it be possible to have a goal that attracts lines only?

In the image below, the black lines identifies two closest points between each line, that I can get as an input. But I have no idea how to pull those 3 straight lineS so that black line length becomes zero (The orientation over/under is not important):

(Daniel Piker) #8

Hi Petras,
I think that should be possible by setting the radius to zero in that last definition I posted.
(This will still allow the lines to slide along each other)

Also, with zero offset I’m not sure how much curvature of the overall surface will be possible. I guess the hexagons can be non planar, but I can’t picture how it would allow positive curvature without the rods bending


The issue is when it set to 0 it slides too much:

Would it be possible somehow only to attract but not slide? To attract to initial line closes point.
Even the curvature will be totally flat afterwards for the second point you mention.

(Daniel Piker) #10 (13.6 KB)
Here’s a new goal that pulls a pair of lines together between given parameters on each


This is a very nice goal, thank you :slight_smile: