Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Check if region contains point

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Check if region contains point


Chronological Thread 
  • From: Sebastien Loriot <>
  • To:
  • Subject: Re: [cgal-discuss] Check if region contains point
  • Date: Thu, 14 Sep 2023 11:32:11 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:IqFo6K7q9QNV5svjNQPXwOvXdLJyesId70hD6qkDc20yTiX+rb HToB17726ItN91YhsdcL+7Scu9qB/nhOVICMwqTM2ftWrdyQ6VxeNZnOjfKlTbckWUltK1l5 0QC5SWYOeQMbEQt7ec3ODXKadY/DDKytHNuQ4c9RtQpMNRBp2IIz0XNu9TKCNLeDU=
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: 6502d327_pQ/sw9Z6y8T+Nkwr/FTcBARzk5FmvmpGxtUuo/Lh3ycnbx3 JvFmZEv51+wGXCHS+WInzcatiMmtgnIpkT7ICZg==

It is hard to understand what you are trying to do.
If you want to get help, you should post a minimal example showing what
you want to achieve.

Yesterday I thought you were doing region growing on a point set but now
it seems to be on a mesh.

Best,

Sebastien.

On 9/14/23 08:30, Claus Volko ( via cgal-discuss Mailing List) wrote:
I've got it now. It is perhaps not the most elegant piece of code but it seems to work fine:

  std::list<int> listRegions = {};

  for (std::size_t i = 0; i < regions.size(); i++)
  {
      Region_growing::Primitive_and_region region = regions[i];
      Line_3* l = new Line_3(Point_3(0, -1, 0), Point_3(0, +1, 0));
      auto intersection = boost::get<Point_3>(&*CGAL::intersection(region.first, *l));

      if (intersection && region.first.has_on(*intersection))
      {
          auto x11 = region.second.front()->halfedge()->vertex()->point().x();
          auto z11 = region.second.front()->halfedge()->vertex()->point().z();
          auto x12 = region.second.front()->halfedge()->next()->vertex()->point().x();
          auto z12 = region.second.front()->halfedge()->next()->vertex()->point().z();
          auto x13 = region.second.front()->halfedge()->next()->next()->vertex()->point().x();
          auto z13 = region.second.front()->halfedge()->next()->next()->vertex()->point().z();
          auto x1a = x11 < x12 ? x11 < x13 ? x11 : x13 : x12 < x13 ? x12 : x13;
          auto z1a = z11 < z12 ? z11 < z13 ? z11 : z13 : z12 < z13 ? z12 : z13;
          auto x1b = x11 > x12 ? x11 > x13 ? x11 : x13 : x12 > x13 ? x12 : x13;
          auto z1b = z11 > z12 ? z11 > z13 ? z11 : z13 : z12 > z13 ? z12 : z13;

          if (intersection->x() > x1a && intersection->x() < x1b && intersection->z() > z1a && intersection->z() < z1b)
          {
              std::cout << "Region " << i << " has point on it : " << region.first << " at " << *intersection << std::endl;
              listRegions.push_back(i);
          }
      }
  }

Am Do., 14. Sept. 2023 um 07:28 Uhr schrieb Claus Volko < <>>:

I tried coloring the regions with intersections red. The result
looked strange. That's why I don't think the code I posted does its job.

Am Mi., 13. Sept. 2023 um 12:41 Uhr schrieb Claus Volko
< <>>:

I'm now trying this:

  for (std::size_t i = 0; i < regions.size(); i++)
  {
      Region_growing::Primitive_and_region region = regions[i];
      Line_3* l = new Line_3(Point_3(0, -1, 0), Point_3(0, +1, 0));
      auto intersection =
boost::get<Point_3>(&*CGAL::intersection(region.first, *l));

      if (intersection && region.first.has_on(*intersection))
std::cout << "Region has point on it: " << region.first << " at"
<< *intersection << std::endl;
  }

It returns fewer incidences of intersection, but I'm still not
sure if it does what it should.

Am Mi., 13. Sept. 2023 um 11:39 Uhr schrieb Claus Volko
< <>>:

I've realized the way I did it was not correct because it
searched for the intersection of the plane with the line,
which always returns a point. But I actually want to check
for intersection with the finite region.

However, I've not understood how region_map() would help me
in my endeavour. Could you perhaps point me to an example?

Thank you!

Am Mi., 13. Sept. 2023 um 11:03 Uhr schrieb Sebastien Loriot
< <>>:

region_map()


https://doc.cgal.org/latest/Shape_detection/classCGAL_1_1Shape__detection_1_1Region__growing.html#a60adecff409f4025585c64cd3bd70110

<https://doc.cgal.org/latest/Shape_detection/classCGAL_1_1Shape__detection_1_1Region__growing.html#a60adecff409f4025585c64cd3bd70110>

Provides a property map associating indicating the
region index for each
input element. The key of the map depends on your
instantiation. But
everything should be documented in the documentation of
your model.

Best,

Sebastien.

On 9/13/23 09:56, Claus Volko (
<> via cgal-discuss
Mailing List) wrote:
> OK, it seems I've found it out myself by now:
>
>    for (Region_growing::Primitive_and_region region :
regions)
>    {
>        Line_3* l = new Line_3(Point_3(0, -10, 0),
Point_3(0, +10, 0));
>
>        if (CGAL::intersection(region.first, *l))
>        {
>            std::cout << "Region has point on it" <<
std::endl;
>            break;
>        }
>    }
>
> Am Mi., 13. Sept. 2023 um 09:39 Uhr schrieb Claus Volko
> < <>
< <>>>:
>
>     OK, I've realized by now that the code I posted
was not wrong but
>     that what I really need is to check if a line
intersects with a
>     region, as I don't know the y coordinate of the
point I'm looking
>     for. How can that be done?
>
>     Am Mi., 13. Sept. 2023 um 07:04 Uhr schrieb Claus
Volko
>     < <>
< <>>>:
>
>         I would like to find the region that contains
a given point
>         after using the region growing algorithm for
shape detection. I
>         tried this code but it does not seem to work:
>
>            for (Region_growing::Primitive_and_region
region : regions)
>            {
>                Point_3 *point = new Point_3(0, 0, 0);
>                if (region.first.has_on(*point))
>                    std::cout << "Region has zero
point on it" << std::endl;
>            }
>
>         Also, if I found a region, how can I access
the information
>         about the boundaries of the region?
>
>         --
>         Dipl.-Ing. Dr. Claus D. Volko, BSc
> http://www.cdvolko.net/ <http://www.cdvolko.net/>
<http://www.cdvolko.net/ <http://www.cdvolko.net/>>
>
>
>
>
>
>     --
>     Dipl.-Ing. Dr. Claus D. Volko, BSc
> http://www.cdvolko.net/ <http://www.cdvolko.net/>
<http://www.cdvolko.net/ <http://www.cdvolko.net/>>
>
>
>
>
>
> --
> Dipl.-Ing. Dr. Claus D. Volko, BSc
> http://www.cdvolko.net/ <http://www.cdvolko.net/>
<http://www.cdvolko.net/ <http://www.cdvolko.net/>>
>
>
>
>
> --
> You are currently subscribed to cgal-discuss.
> To unsubscribe or access the archives, go to
> https://sympa.inria.fr/sympa/info/cgal-discuss
<https://sympa.inria.fr/sympa/info/cgal-discuss>
>

-- You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss
<https://sympa.inria.fr/sympa/info/cgal-discuss>




-- Dipl.-Ing. Dr. Claus D. Volko, BSc
http://www.cdvolko.net/ <http://www.cdvolko.net/>





-- Dipl.-Ing. Dr. Claus D. Volko, BSc
http://www.cdvolko.net/ <http://www.cdvolko.net/>





-- Dipl.-Ing. Dr. Claus D. Volko, BSc
http://www.cdvolko.net/ <http://www.cdvolko.net/>





--
Dipl.-Ing. Dr. Claus D. Volko, BSc
http://www.cdvolko.net/ <http://www.cdvolko.net/>




--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss




Archive powered by MHonArc 2.6.19+.

Top of Page