Populate percentage of random points with geometry

Hi guys, pretty new to grasshopper but am wondering if anyone can help me on this one.

I’m looking to create a list of random points and then populate each point with a specific curve I have drawn. Id like to be able to control the percentage of total points that have been populated with each curve. So say there were 100 points in total, Id like there to be 78% curve A, 20% Curve B, 2% curve C

Im hoping to create a script with a result similar to what i have uploaded.

Any help would be appreciated,

Cheers Guys

there are several things going on in that image :slight_smile:

when you say to “populate each point with a specific curve”, you mean that the points are the black circles, and the connection curves are the lines between those circles?

or by “populate each point with a specific curve” you mean that each of the following outline entities will be oriented over each random point?

I also feel like there’s some scaling going on in your image :slight_smile:

sorry I should have been clearer. So the second one! Each of those groups of circles joined by the lines are the curves I would like to populate on each point.

The way I was trying to do it was by creating a grid, adding a point to the centre of each cell and trying to spawn each of these on the points. But I’m not sure I was using the correct container for the geometry, because it wasn’t working.

And as for the scaling issues, i know it looks a bit off but surprisingly its all correct haha. I am designing some trials for a perforated cladding in my Uni project. What you are looking at are molecules, the radius of the circles are the mass of the atoms. Not completely sold on the idea yet but we shall see!

Hope that helped!

given your description, this is a sketch of something that might work

populate a rectangle of given sizes with n points (1) then create a XY plane on each point and random rotate it (2), then partition this list of points into 3 different lists depending on the amounts of curves per type A, B, C
then orient the initial three curves A, B, C on those points (4) using their area centroid (5) and preview them in different colors (6)

hiding everything but the preview:

random_molecules.gh (20.9 KB)

BUT :slight_smile:

nothing prevents the oriented curves to intersect each other…

so in case of intersection the only way to solve -at the moment- is to change Random Point seed, or Rotation Seed, or make the rectangle bigger (so the points will be more distanciated, because Populate 2D is not a random population, it has a certain degree of equal distribution embedded in it)

best solution, but maybe it’s an overkill as in your original image shapes look a bit sparse, circle packing inside the rectangle area, then assign each circle a shape, to be sure that each shape will have its own “private circle space”


That’s perfect! thankyou very much there mate! and thankyou for taking the time to explain it. Im looking forward to learning more on grasshopper! seems like it can do so much!

1 Like

I haven’t taken the time to read this thread or look at any of the code, sorry. But the images you posted remind me of this thread in March, 2023:

1 Like

I see what you mean! That actually might help me with a script involving cull patterns that i was struggling with a few weeks ago!