Boost logo

Geometry :

Subject: [ggl] Problem with sorting points in Polygon
From: Markus Eich (markus.eich)
Date: 2011-05-24 11:42:58


Dear all

I am trying to recover the "concave" shape of a point cloud. For this I
use a method called Alpha Shapes (in CGAL) or Pivoting Ball Algroithm.
The shape is not convex (but could be).
The problem of th algorithm is that the points are not "ordered". For
instance, if I take a rectangular shape it looks like the screenshot
attached.

I though that using boost geometry would help. I filled the polygon_2d
structure and applied the "correct" method,

After filling the polygon Struct and applying the correct method, the
shape looks still like a spiderweb, not like a propper square, as it should.
I could of course apply the convex hull detection, but I want to
reconstruct the shape in a concave way.

Do you have any clues? Does the correct method really sort my points in
the polygon? What other sorting options to I have?

I am new go Boost::geometry

Cheers,

Markus

Here is my code snipped:

======================================================================

     boost::geometry::polygon_2d sorted_poly;

     //get points from the CGAL in an unorganized way

     for(Vertice_iterator it = as.alpha_shape_vertices_begin(); it !=
as.alpha_shape_vertices_end(); it++){
         Alpha_shape_2::Vertex_handle vh = *it;
         boost::geometry::append(sorted_poly,
boost::geometry::make<boost::geometry::point_2d>(vh->point().x(),vh->point().y()));
     }

     boost::geometry::correct(sorted_poly);

     std::size_t numPoints=boost::geometry::num_points (sorted_poly);

     boost::geometry::linear_ring<boost::geometry::point_2d> outer=
sorted_poly.outer();

     //Reproject points and fill PC structure
     for (size_t i=0;i<numPoints;i++)
     {
         Eigen::Vector3f pbbx;
         //take first and second dimension of the outer polygon ring

         pbbx=boost::geometry::get<0>(outer[i])*u;
         pbbx+=boost::geometry::get<1>(outer[i])*v;
         pbbx+=p0;
         alpha_shape.push_back(pcl::PointXYZ(pbbx[0],pbbx[1],pbbx[2]));
     }

    }

======================================================================

-- 
Dipl. Inf. Markus Eich
Researcher
DFKI Bremen
Robotics Innovation Center
Mary-Somerville-Str. 9
28359 Bremen, Germany
Phone: +49 (0)421 17845-4105
Fax:   +49 (0)421 17845-4150
E-Mail: markus.eich_at_[hidden]
Weitere Informationen: http://www.dfki.de/robotik
-----------------------------------------------------------------------
Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
Firmensitz: Trippstadter Stra?e 122, D-67663 Kaiserslautern
Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster
(Vorsitzender) Dr. Walter Olthoff
Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
Sitz der Gesellschaft: Kaiserslautern (HRB 2313)
USt-Id.Nr.:    DE 148646973
Steuernummer:  19/673/0060/3
-----------------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Bildschirmfoto.png
Type: image/png
Size: 34682 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/ggl/attachments/20110524/2b138857/Bildschirmfoto-0001.png

Geometry list run by mateusz at loskot.net