Tolerance on Kangaroo Circle packing not working?

I notice that sometimes the tolerance function on the solver doenst merge points and i can’t replicate the problem- sometimes it does and sometimes it doesnt! I have attached the definition and an image here.
sometimes the mesh eval goes red but the definition still works , mostly. Any ideas?
Please correct me if im wrong in this assumption-
I populate my mesh with say 5000 points to test for collision at 100mm radius, and i ask the solver to merge points that are closer than 100 mm and it would merge/cull them until it finds the best fit so i would end up finally with the ‘right’ number of points that satisfy this condition and shouldnt have any circles overlapping.

im hoping that i have made a very obvious(to one of you) mistake here!

thank you :slight_smile:

KCP.gh (42.4 KB)

Hi @aditya.d.bhatt

I think there’s some confusion here about what the tolerance setting is.
It is there so that tiny gaps in imperfectly drawn geometry can get joined and their ends combined into a single particle before the simulation starts:
image

It is not intended as a way of culling duplicates like in your definition, because you’d then get particles trying to collide with themselves, and it does not affect the behaviour of the simulation after it has started.

If you want to remove points within a certain distance before starting, you can use the standard ‘CullPt’ component.

1 Like

Here’s a quicker and simpler way to initialize the right number of points for a circle packing of given radius.
circlepack_radius_mesh.gh (18.3 KB)

2 Likes

facepalm ofcourse!! thanks for clarifying that Daniel!

1 Like

this makes sense. after I posted this i started trying out quad and trimesh divisions as well to control the number of points to start. What I also started doing is opening up the distance between the circles (see image) and i just offset them in and connected lines based on proximity.


I found that if i had larger gaps in my packing i would end up having connectors crossing over each other.

Can I ask, why have you used a different mesh component to the OnMesh and the SphereCollision ?