Subject: CGAL users discussion list
List archive
- From: Sebastien Loriot <>
- To:
- Subject: Re: [cgal-discuss] Finding a group of points with a convex hull
- Date: Tue, 5 Jul 2022 10:55:09 +0200
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
- Ironport-data: A9a23:UaNOMKAx7SA0jhVW/xrlw5YqxClBgxIJ4kV8jS/XYbTApGt01TNWn 2EZC2vXbP+JZ2X3eYolbovjoR8HupTQzddlOVdlrnsFo1Bi+ZOUX4zBRqvTF3rPdZObFBoPA +E2MISowBUcFyeEzvuVGuG96yE6j8lkf5KkYAL+EnkZqTRMFWFw03qPp8Zj2tQy2YfhXlvU0 T/Pi5S31GGNi2Yc3l08sPrrRCNH5JwebxtF1rCWTakjUG72zxH5PrpHTU2CByeQrr1vIwKPb 72rIIdVUY/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8A/+v5TCRYSVatYozm7zt1L5 95sjJ2pZyYWP67ikcNCTAYNRkmSPYUekFPGCX22sMjW0FefNnWxn7NhC0Y5OYBe8eFyaY1M3 aZAeXZdM1bZ3bvwne7TpupE3qzPKOHwOIQFu3Z8izTdJfkjSJHHBa7N4Le02R9p1p0QQa+CP 6L1bxJQZwrwX0JlHWsLK5QTwOWEvFzGYhlx/Qf9Sa0fujCPlmSdyoPFO9XcfpmGRN5eg12Dj nnX+nzwRBAcLt2WjzSfmk9AncfKlCL/HZ0ITfi2q6Isj1qUyWgeThYRUDNXvMVVlGayaYNSE WMf2xMvtIYTy02oYNDaAAKn9SvsUgEnZ/JcFOgz6Qeow6XS4hqECmVsctKnQIx23CPRbWx6v mJlj+8FFhQ07+LIESP1GqO86GLtaXJMfAfucAddFVNdi+QPtr3fmf4mczqOOKu8j9mwBiuph j7X8G4xgLIcicNN3KK+lbwmv95OjsiYJuLWzl+PNo5A0u+fTND+D2BPwQaAhcus1K7DEjG8U IEswqByFtwmA5CXjzCqS+4QBryv7PvtGGSC3AA+Qsh9rG/2pC/LkWVsDNdWdBcB3iEsKW+BX aMvkV45CGJ7Zyb1MfcsP+pd9exzlPG8T7wJqcw4nvIXOsQrHON21C5pYkGU0gjQfLsEwMkC1 WOgWZ/0Vx4yUPw5pBLvHrt1+eJ1m0gWmDyLLbimnkzP+efPPxa9FOZVWHPQNLxRxP3f+239r Y0PX/ZmPj0FD4USlAGModBNRb3LRFBnba3LRzt/LLHZfFU+Rj9+YxITqJt4E7FYc21uvr+g1 hmAtoVwkjITXFXLdleHbG5NcrTqUcotpH43J31+MlOh2nxlaoGqtf9Ne5wydLgh1epi0f8kF 6lfK5vcWqxCGmbd5jAQTZjht4g9JhmmgAS5OSD6MjUyephXQRPEp43/dQz1+ShSVSe67JNso 7Cp2g7Bb4AEQgBuUJTfZP61ngG+uHEcnKR5WE6Reotff0Dl8Y5LLS3tj69vc5tcd0mbnjbDj lSYGxYVo+XJsrQZytiRiPDWtZqtHst/AlFeQDvW4LOwAi/QoTiuzIpGZ+CXJGyPWW7x/pKiU uVb1fTLNvMKwQRRuI1mHrc3lK8z6oe9p7JeyQg4TnzHY07xUeFlK3iCmNZV7+hDm+MftgyxV UaCvNJdPOzRas/iFVcQIisjb/iCha5IwGiMtaxtLRWo/jJz8ZqGTV5WY0uGhhtbIeYnK4gi2 +og5JMb5lDtkBYsKdra3ClY+37WdS4FWqQj844AWcrl11ZtxVZFbpjRTCTx5cjXOdlLN0ArJ B6ShbbD1+sAnBucKyJrGCifx/dZiLQPpAtOkA0IKWOPl4eXnfQwxhBQrWk6Qwk9Is+rCA6v1 rWH9nGZJJliOx9tjclHGn+2QkRPWUHf9Uv2xF8E0mbeSiFEk4ALwHIVYY6wEIIxqgqwvQS3O JmXzW/kVXDhe8SZMu4aRxt+s/K6JTBu3lSqpS1kdvhp27E1ZDPkhumlYm9gR94Lxy8urBWvm NSGN9qcpUE22eD8bkH750SnOWwsdS25
- Ironport-hdrordr: A9a23:QVtEAawB7Z9LLUmirBprKrPwD71zdoMgy1knxilNoG9uA6qlfq eV7YgmPH7P+UsssRQb8+xoV5PwI080maQFmrX5eI3SJjUO21HYSb2Kj7GSoAEIcheWnoU86U 4jSdkHNDSZNzlHZK3BkW6F+rgbsaC6GeyT9IPjJrRWIT2CqZsM0+60MGmm+4RNKjV7OQ==
- Ironport-phdr: A9a23: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
- Ironport-sdr: nRse4I8GJYslHJX9wjte3YIMhMzy7v8evzIzsIjHD1vX229LEg59eCbLYO+0IJWuQLBDqZEesu 8BqmaPhc0Y1rePfQi15y09QvH603jJYJHoc+wEYbDLtM/37MPco7nm6Kwphqz4WyMWT44C88/m i1BL/nwzmN6J3NTqhu3jzvGDW1ewdj8xlRxccZmwrEBFCpXWhmilNw3B5T+tdfyz+yA3/RZkuv 61Y2wA6WCvNiTSStpp/UUgn9YdvxVz6pulZG6jvXkYe6HgzvQFLRlrnC/2rFlg5if6o+L75aix 1sbC6h7aKhvr4b3ZC42vmy7f
I'm not sure to get everything correctly.
Are you working in the plane? You mention 2D surface and then
has_on_bounded_side() of Polygon_2.
If you are working in the plane and all the query points are available
at the beginning, a sweep should be the fastest algorithm.
Actually, if you sort all convex hull segments, then you simply have
to locate the point within the sorted segment. Then sort the selected
segments along the y-axis and find the two segments enclosing your query point.
Best,
Sebastien.
On 6/23/22 00:30, "Scriven, David" ( via cgal-discuss Mailing List) wrote:
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:
//Afunctorthatreturnstrue,iffthesquareddistanceofa2Dpointis>810000(i.e900squared);
structdist2_gt_val{
booloperator()(constNN_iterator2&it){return((*it).second>810000);}
};
//AniteratorthatonlyenumeratesdDpointswithdistance<900(squared)
typedefCGAL::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 <tel:604-822-7812> 2350 Health Sciences Mall, fax: 604-822-2316 <tel:604-822-2316> University of British Columbia, Vancouver, BC. V6T 1Z3, Canada
--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss
- Re: [cgal-discuss] Finding a group of points with a convex hull, Sebastien Loriot, 07/05/2022
Archive powered by MHonArc 2.6.19+.