Grasshopper

algorithmic modeling for Rhino

# Analyzing nodes with trigonometry

Hi there,

So I've come back to a project which at the time I didn't manage to solve and it still seems to be causing me a problem. My aim for this definition is to generate 3D printed nodes based on a network of line which would be assembled with standard rods. These would be optimized using simple trigonometry math.

The issue comes from measuring the angles of each line against every other within that node. When compared with measurements taken from the rhino model, many of them just don't match up. Am I not matching the data correctly?

The logic of this definition is as follows:

- Extract connectivity info with Sandbox

- Extract Vectors from each node

- Measure the angle of each line against every other within the node and extract the smallest value

- Use this value for trigonometry to find out the length of the strut ( strutRadius / tan(smallestAngle/2) )

- Build a 3D printed node based on this geometry

Charles

ps: please let me know if I didn't make myself clear enough

Views: 835

Attachments:

### Replies to This Discussion

No time to have look a what you've done in detail, but perhaps this discussion will be help.  All of Matt's work might be open source via the Autodesk Pier 9 Studio/Workshop site... (not 100% sure where)

http://www.grasshopper3d.com/forum/topics/smallest-angle-between-cl...

I'll go back through it anyway.

I'm not sure, but this way is right?

Attachments:

Wow, thank you so much Daniel!

Would you mind giving me a brief description of what you did?

You have {0}(lineS), {1}(lines), {2}(lines), {3}(lines), and if you need to compare each independently then you need to have {0;0}(linE), {0;1}(line), {0;2}(line), {0;3}(line), {1;0} (line), {1;1}(line), {1;2}(line), {1;3}(line)... and on the other side to have {0;0}(all lines except {0}(0)), {0;1} (all lines except {0}(1)), {0;2}(all lines except {0}(2)), {0;3}(all lines except {0}(3)), {1;0} (all lines except {1}(0)), {1;1} (all lines except {1}(1)), {1;2} (all lines except {1}(2)) ,{1;3} (all lines except {1}(3))...

The first tree is easy to achieve, simply grafting a branch for each element, and the other, what I've done is to copy all lines of each tree ({0},{1},{2},{3}), to have them in all branches of each tree ({0;0}(elements of {0}), {0;1}(elements of {0}),,{1;0}(elements of {1}), {1;1}(elements of {1})..., and then remove in the first branch({0;1} the first element(0), in the second branch the second element, the third branch the third element...

And so correctly you compare each line with all the other within each branched tree.

Aaaaapufff XD

Awesome! Thanks again :)

Have you tried the Treesloth component List Compare?

It compares each item in a list with all other items.

This def from a previous discussion does what you are trying to do I believe.

http://www.grasshopper3d.com/forum/topics/shatter-curves-from-both-...

Attachments:

• View All