Minimal path networks

Shortest path algorithm.gh (14.4 KB)

Hello, In reference to the attached grasshopper file.

1.As you can see the branching is only attached by the corner points of the square
how do I change it.How do I define a start point and an end point anywhere in the cube other than the corners.

2.This script follows delaunay triangulation for the nearest path.
How do I provide an angle of 120 degrees between the lines for all branching growth

3.Once I get numerous branching iterations, I need to analyse the structure on Karamba, as you see its a looping process, How do I give a thickness to the branches and bake it.

Thank you for your time in advance.
This is something very very urgent.

Regards
Arya

I was trying to implement something similar to @AndersDeleuran video:

If there would be any use here is the script, you can relax the output using kangaroo
PseudoSteinerTrees2.gh (12.4 KB)


4 Likes

Hi petras,
Thank you for your syntax.
I am getting an error in grasshopper.Can you help me solve it.
Also I have very no knowledge of .NET, Can the branches only have an angle of 120 degrees in between?I see here it is randomly populating the cube.
I am not getting the output lines like your Jpegs show

Thanks

Do you have rhino6?

Or use this version for rhino 5 PseudoSteinerTrees2Rhino5.gh (10.5 KB)

no idea about 120 degrees, I did not check it after relaxation, for kangaroo I just used zero length springs with anchor points.

1 Like

I didn’t open the file yet, but to get 120° angles when relaxing in Kangaroo - use the ConstantTension goal instead of zero rest length springs (the latter uses Hooke’s law, with force magnitude based on extension, so has energy proportional to length squared, whereas the former has energy proportional to just length).

If the tension forces in three members attached to a point are equal, the only equilibrium configuration is when the angles are 120°

(This system will break down when segments get close to zero length though, and for that you’d need to include a way of changing topology during the relaxation)

1 Like

6 Likes

Hi Petras,

Why am I not able to get the nodes correct.They are all straight lines
image

Because you did not relax it with the kangaroo.

If @DanielPiker could show the example file it would be nice.

PseudoSteinerTrees2Rhino5.gh (12.2 KB)

It is as simple as this with constant tension and Kangaroo2:

actually you do not need spring goal:

2 Likes

What command did you use after clean tree.Also how are you getting nodes at the end of your lines.

Hi Daniel,
Thank you so much for your input, the constant tension goal works great for the angle of 120 degrees. Petras has helped me decode it on grasshopper
However, I still I want to know little bit about the theory behind 120° formation in a soap bubble if you can.I know that the 120 logic has an imaginary hexagon surrounding it, But why does it want to attain an equilibrium position at this particular angle.Is there a math behind it.

Regards
Arya

If you think about just 3 cables pulling on a point with equal force, if the point doesn’t lie in the same plane as the ends of the cables, it will get pulled down until it does.
Then if 2 of the cables are closer together in direction, they overpower the third, so the point moves towards the ends of the 2 close ones until things even out.

1 Like

Thank you so much Daniel.I understand now.

After clean tree I use my add on NGon to create line graph that gives information which line is connected to which.

I do not know if it is necessary as it is used only to calculate the angle

Thank you so much for your immediate replies Petras, and thank you for having patience with me.You are just amazing.
The next question I have is something related to it your addon.

1.The branches are lines, can we add certain thickness to them.Can we calculate the structural strength in Karamba, once we increase the thickness.
2.Can we map the plane and angle of the branching with respect to 0 degrees or some constraints for example an imaginary point or line as it increases,right now the branches are all over in every plane.How to determine the predictability.
so for example I have 5 counts going in populate 3D. Can we map the branching, hence I’ll say this (xy/yz/zx)plane gives in this (30/60/90/120…)angle in (x/y/z) direction

Also measurement of length.How to measure the total length of the line

Hi,

For the thickness I would use @DanielPiker Fattener: Skeleton fattener + mesh cage morph
I am not structural engineer thus my knowledge in Karamba is wage.

For the second point, could you make a rhino drawing?

For measurement, grasshopper component curve length shows the length of the line.

1 Like

I ll look into Fattener command.In the mean time, I could calculate the total length but the unit was wrong because there was no specific unit given to the box.When I gave a dimension of 5000mm to the box, theres an error coming up.


and I cant see the added length.
Could you please look into it.PseudoSteinerTrees2Rhino5 (1).gh (13.3 KB)

Hi @Petras_Vestartas ,

I had to say this its been a pleasure talking with you.
You have been answering all my questions, solving them one after the other :slight_smile:
I will try and figure out the way to solve the scale issue once given the dimension.
Also is there a way we can define the start and end point instead of using populate 3d.
such that it is easier to map the path and figure out a way to find the angle between two consecutive lines in order.

Again tonnes of thanks to you.
Keep spreading knowledge.

Arya

I did not know that by simply passing a nested list into a second C# component it will output the tree, without having to convert it with explicit code in the first C# component, thanks @Petras_Vestartas

1 Like