Dividing point distribution into areas

Hello everyone,

I’ve created a script that distributes a surface of points into different lists based on certain parameters. It’s part of an area layout design for the space outside a building.

Now, I’d like to develop a method where, after distribution, the points are attracted to each other and form clusters, something more like a “camo pattern.” This would be more useful and visually effective for the design.

To be honest, this part is a bit above of my skill level, so I’m really hoping someone here can help me out. Any guidance or suggestions would be greatly appreciated!

Thanks in advance!
PointDistribution_060625.gh (41.0 KB)

Your goal may be clear in your mind but without an image, I have no clue :question:

Hey Joseph,

Yeah, I guess that was a bit cryptic. What I meant is something like in the image, where the entire surface of points looks more refined or “polished,” so that the areas appear more uniform.

I think the key part is removing the single or isolated points (or small clusters of two) from the larger areas. But for me, it’s more about understanding the underlying logic of how to achieve that, that’s where I’m stuck.

Hope this makes things a bit clearer!

Not to me. Haven’t got a clue about what you’re asking?

A problem well-stated is a problem half-solved.
– Charles Kettering, head of research at General Motors for more than 25 years

1 Like


PointDistribution_060625.gh (46.8 KB)
Hi! Is that close to what you’re looking for?

1 Like

It has a few flaws right now, for example you can pull small groups not to curves but to other points, and you can pull only one point from group (so small groups made of 2-3 points do not get pulled to different groups), but it should give you a general direction

Wow, that is pretty much what i meant!

Would you mind explaining the logic behind the script, cause it seems really interesting.

It’s difficult to explain it better than the algorithm already does.
You have multiple branches of points based on colors, we just add information about closeness of each point relative to each other inside of the group. You have green points, we check how they are from each other using metaball and point in curve. If a few points form a cluster somewhere, they will be in a different group. You split a tree in two parts, small clusters and big clusters. Then you just search a closest big cluster for each small cluster(this part needs to be done in a different way in the script, try to handle this).

please note that your starting data has a different amount of items:

I think the best way to do that might be to make some tweaks to the part that generates the point groups in first place, which is the part of the definition that comes to the left of the Data parameters :slight_smile: and was not present in the gh file

1 Like