# How to cull duplicated points from overlapping point fields, but keep one?

Hi Guys,

I am trying to generate different point fields, that are generated by grouping in x-direction, starting from my attractor points. It could become possible that some fields are overlapping (as you can see between field 0 and 2). When it comes to an overlap between two fields I would like to cull the overlap from one of the two fields. This means that I want to keep one of the two overlapping point groups. For this decision, which field has priority in case of culling, I would like to have control on.

1. Duplicated point groups from overlapping - how to cull one, keep one?
2. How to get control over the priority, which fields is culling the other ones?

Maybe there is a better way of generating my fields by avoiding an overlap that generates duplicated points.

Thanks a lot for your time and help

190715-GHQuestion.gh (107.3 KB)

Since your point groups have rectangular boundaries, you could create a list of rectangles (one per field):

\left\{R_0, R_1, R_2, R_3, ..., R_N \right\}

Instead of rectangles, they could be any closed curve through, maybe convex hulls or some other complex shape.

Youâ€™ll need to modify that list slightly, by removing the last element and inserting a new element at index=0 which is guaranteed to not contain any points, letâ€™s call that \bigodot, giving you the collection:

\left\{\bigodot, R_0, R_1, R_2, R_3, ..., R_{N-1} \right\}

Once you have this list, combine a Series and SubList component to get increasing subsets of this collection:

\left\{\bigodot \right\}
\left\{\bigodot, R_0 \right\}
\left\{\bigodot, R_0, R_1 \right\}
\left\{\bigodot, R_0, R_1, R_2 \right\}
\left\{\bigodot, R_0, R_1, R_2, R_3 \right\}
\left\{\bigodot, R_0, R_1, R_2, R_3, ..., R_{N-1} \right\}

This tree of boundary sets is now ready to be matched against your tree of point-groups. By removing all the point from group k which are inside any of the boundaries inside boundary set k (using Point In Curves) you can get rid of overlaps.

All the points in the first group will remain intact, since they are only compared against the \bigodot boundary, which, as previously established, does not contain any points. The points in the second group however will be compared against the boundary of the first group, thus removing them in case of overlap.

Hence, with this approach you can control which groups overrule others by sorting them from most important to least important before you start culling.

Hi David, is your way also possible when there are multiple overlappings at different fields?

Yes.

Hi David, unfortunately I am not able to receive the boundary from my point fields. I tried to open a new topic with the problem.

https://discourse.mcneel.com/t/how-to-interpolate-edge-points-from-point-clouds/86398

You may want to use Convex Hull to get the boundaries. Possibly combined with an offset step to slightly grow them. I did mention Convex Hull in my initial response, did that not work?

1 Like

I could find a good solution with the boundaries.

Can you show me the way you discribed above? It is difficult for me to follow your steps beacause I am not that much experienced.

I prepered all the geometry you need, my point groups and the boundary curve from them. Ifyou could show the scheme in GH to me, that would be very helpful.

RuttenRE.gh (2.1 MB)