Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Finding a group of points with a convex hull

Subject: CGAL users discussion list

List archive

[cgal-discuss] Finding a group of points with a convex hull


Chronological Thread 
  • From: "Scriven, David" <>
  • To: "" <>
  • Subject: [cgal-discuss] Finding a group of points with a convex hull
  • Date: Wed, 22 Jun 2022 22:30:37 +0000
  • Accept-language: en-GB, en-CA, en-US
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=Pass
  • Ironport-data: A9a23:tGPzC65qZt4c6q8Rp71y7QxRtOHFchMFZxGqfqrLsTDasY5as4F+v mJKDDrUO6rcNGf0eNkgbd/g/B8D78fUztJnGwZtqyowEysa+MHILOrCIxarNUt+DCFjoGGLT ik6QoOdRCwMo/O1Si6FatANl1ElvU2zbue6WbSs1hxZH1c+En9/00g7x4bVv6Yx6TSHK1LV0 T/Ni5CHULOV82Yc3lM8s8pvmjs21BjBkGpwUmgFWBx+lAS2e0/5rH4oDfrZw3PQGuG4FwMhL grJ5OnREmjxp3/BBj45+1pSn5Bjf1LcAeSOoiI+t6mKmR1evmo326c/cucWYgFcgl1lnfgok JMR6NrqFUF4YcUgm8xEO/VcOy13I6xKvqTMO3mhvMq70kfNNXDlqxlrJBhtYN1EqrsuWAmi8 tRdcljhdCurjO2/xPe3S/Jnm984BMjtJoIW/H96pQw1p95OrYvrR6/S6ttWxzxo389VAe6GP o8UbyZ0NE2FbUAKJE0ZB5YjkaKmgn72b3tDuUmJqK8spWnPihF72/7mObLolhWxbZ09ti6lS qjupT+R7s0yXDBH9Qe4zw==
  • Ironport-hdrordr: A9a23:rXueiqGrErD+gr6QpLqE28eALOsnbusQ8zAXPhhKOHlom7+j5q STdZUgpGfJYVkqKRIdcLy7VJVoIkmsjqKdg7NhX4tKNTOO0ADDQb2KhbGSuQEIcBeRygcp78 ddmt9FaeEYY2IUsS+w2njeLz9p+qjgzEmHv5am80tQ
  • Ironport-phdr: A9a23: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 oEoehjNP30=
  • Ironport-sdr: r2SfIPXfi9yQUQtCkuIcuZDC7h7ynvr02oZWLJ8u+mHlCoRpO0JrgCte4W6cMI3jcsuM2gwRSM vpOt9jj3VbpU0JngsdO7WIBPqPxf65yIH+U0s+vULBgbqV1KoDcUc5ZYa9Kts9et9F33dYYAVv /6wsZbFxzNip0h8/2eULUEE7Kk+OUJKgGgSVPWfllgzmBh4Ltn2DFxoOKqV8/ndRvc/8YwuWfr DNS40Xz6xcfsRhFAxemwTOcje5U2TJHPYOZuw4MbA+uDb7LRSrzW/huJi3J/TWgD9d4vceLipk KAdzS7IOaj4J6wINI+lurQeJ

Following up on the earlier discussion - I have thousands of points on a two-D surface and a number (hundreds) of convex hulls of various sizes. My problem is to determine which points are in which hull.


My solution has been to look for the nearest neighbours of the hull centroid using the incremental neighbour search with a fixed distance:


// A functor that returns true, iff the squared distance of a 2D point is > 810000 (i.e 900 squared);

struct dist2_gt_val {
    bool operator()(const NN_iterator2& it) { return ((*it).second > 810000);  }
};
// An iterator that only enumerates dD points with distance < 900 (squared)
typedef CGAL::Filter_iterator<NN_iterator2, dist2_gt_val> NN_distance_iterator2;

which was OK provided no dimension of the hull was greater than 900.

I've recently been presented with data where many of the hulls are huge although there are many small ones too.
I wondered whether there was version of the incremental search that can use a variable limit - i.e. that the squared distance could be defined for each hull. The value would be the max. distance from the hull centroid to the edge of the hull.

Is there an easier way to do this?

David Scriven, Ph.D.                 e-mail :  Dept Cellular & Physiological Sci.   ph:  604-822-7812 2350 Health Sciences Mall,           fax: 604-822-2316 University of British Columbia, Vancouver, BC. V6T 1Z3, Canada  


  • [cgal-discuss] Finding a group of points with a convex hull, Scriven, David, 06/23/2022

Archive powered by MHonArc 2.6.19+.

Top of Page