Constrain angles in a network of curves

Hi Guys

Please can someone have a look at this and tell me where I am going wrong.

I am trying to rebuild a network of curves from an existing network, however I would like to limit (constrain) the angles between lines to the nearest factor of 5.

The reason I am trying to do this is as I am building a node based structure. I do not want too many angles when I create the joints, this will become important for machining.

In my first attempt I used the angle snap and solver in kangaroo.
In my second attempt I tried to use trigonomatry.

I do get close but some of my lines just go to the wrong point.
I have internalised that data.


Changeangles_networkcurves1.gh (35.1 KB)
Changeangles_networkcurves2.gh (28.6 KB)

thank you!!

2 Likes

What does this mean?

1 Like

Do you mean 5 degree increments? Eg 45, 50, 55

1 Like

Sorry for being unclear, yes to the nearest 5. As @dharman said 45,50,55,60.

I was designing some node based sculptures and was wondering if one could limit the angles or round off the angles to the nearest 5 so 0, 5, 10, 15, 20, 25 and so on

And then rebuild the entire form, with more or less the same distances between nodes as it had before but not with angles that are simpler. Right now the angles go to the 6 and 7th decimal place. 4.908731
degrees.

I am not sure it will be possible to round up the numbers to 5 and keep the same overall shape. So even just round off to the nearest integer?

1 Like

Yes! Use Pufferfish!
It has 3 different rounding components that will do what you want.
Pufferfish | Food4Rhino

1 Like

Hi @Ryan14 thanks for having a look.

I did try that at one point (round to N wher N= 5) And it does help get the correct angles.

So perhaps my problem is hoe does one rebuild the network of curves after rounding angles so that the struts meet the same nodes / vertices as it did before.

In the image below theoriginal lines are the purple ones original curves while the red ones are the rebuilt lines but as you can see. The red lines dont meet up with correct nodes/vertices.
Note strut 197



1 Like

Unfortunately, that is over my head. :slightly_smiling_face: @Quan_Li Is a pro at this kind of thing though!

1 Like

Lol me too. I even asked chat GPT3, thats the second example I posted.
Thanks for trying. :grinning:

2 Likes

Changeangles_networkcurves2 Edited V0.gh (42.9 KB)

You can measure the angle between lines and assign new angles to them using K2, but it doesn’t work in this case.
I am not sure if this is caused by the complicity of the structure or the wrong usage of the components.
If anyone has an interest, please help me confirm it, thanks!

@Quan_Li There was a small error in your script feeding degrees instead of radians into the angle goal, however fixing that does not solve the problem.

It does not make geometric sense in most cases to snap angles to discrete increments. I tried this method with a box and found it is possible, because all angles are 90 degrees.

However as soon as we start connecting several polygons together we quickly run into problems. The angles need to add up to 180 degrees on a triangle (with straight edges in Euclidean space!), and this fact is contradicted when angles are rounded to fixed increments.

e.g. If we have a triangle with angles:
33°+93°+54° = 180° and round to:
35°+95°+55° = 185° then the sum is more than 180 degrees and is not possible.

Also neighbouring connected polygons will force contradictions in that rule as well. the general rule for planar polygons is S = ( n −2) × 180° where S=sum of angles and n=number of sides. I wonder if @DanielPiker can shed more light on the underlying problem? I wonder if a goal could dynamically round to available increments, whilst maintaining a valid sum. i also wonder how much this would actually achieve.

@pretorius.sean Maybe you could explain how you intend to manufacture your components? do you want to reduce the number of unique components? or is it a matter of making measurements easier for cutting? there are many ways to make a structure like this, and the kind of rationalization you apply will heavily depend on the constraints of your construction techniques, tools and materials. If your members can bend, then there will be a lot more freedom to standardize nodes. If your members can have compound angular cuts, then there may be no need for nodes

My script is a bit overcomplicated because i was exploring the problem with a variety of geometry. Most of the goals are not used (strength=0) in this box example.

Changeangles_networkcurves2 Edited V1.gh (64.2 KB)

2 Likes

Yes, you are right. No way it can get those angles and still maintain a reasonable shape. Thank you very much!

First and foremost, I want to express my gratitude for taking the time to review this message.

In response to your question, yes, I am indeed interested in reducing the number of unique components.

Recently, I’ve been engaged in a work-related project involving force and form diagrams, and I must say, I find them exceptionally captivating. The idea struck me that these diagrams could be transformed into fascinating sculptural furniture pieces.

[link to Geometric Structural Design: 3D Graphic Statics to Fabrication(Fall 2017) | psl].

To bring this vision to life, I’ve been exploring techniques such as subd multipipe and dendro. Combining them with the concept of node and struts appears to be the most promising approach for manufacturing these structures. An additional benefit is that it would facilitate flat packing without compromising the overall aesthetic.

As for practicality, initially, I could easily 3D print the nodes. However, to optimize production efficiency, I envision creating molds from various types of nodes, which would significantly reduce the number of unique components involved.

Moreover, I believe that even limiting the angles to integers would prove helpful in streamlining the production process.

I genuinely appreciate the valuable time and effor taken to looking into my question. I’m eagerly looking forward to spend the day examining the definition you’ve created and learning from it.

The willingness of members within this community to support one another is truly inspiring and humbling.

1 Like