Commit Graph

649 Commits

Author SHA1 Message Date
Jane Tournois 53099dccae remove debugging code 2015-05-15 11:19:49 +02:00
Jane Tournois a59df329f6 remove debugging code 2015-05-15 11:17:29 +02:00
Andreas Fabri 09ea32096d Add generic is_valid_polygon_mesh() to BGL Helpers 2015-05-15 10:52:31 +02:00
Andreas Fabri f6b518c693 remove the debug output. The bug was in edge_flip for OM 2015-05-14 17:28:17 +02:00
Sébastien Loriot dceb558e4f Merge branch 'Polygon_mesh_processing-GF' into Polygon_mesh_processing_OpenMesh-GF
Conflicts:
	Polygon_mesh_processing/examples/Polygon_mesh_processing/remove_degeneracies_example.cpp
2015-05-14 15:45:35 +02:00
Sébastien Loriot b27eedb52a the PolygonMesh is not const so must be the vertex point map 2015-05-14 15:38:42 +02:00
Sébastien Loriot 5cd9576ea0 add missing inline
the function is not template and will be defined in each compilation-unit
if not inlined
2015-05-14 15:38:08 +02:00
Sébastien Loriot b27f120a02 bug-fix: Compare_distance_3 returns an enum not a bool 2015-05-14 12:04:10 +02:00
Andreas Fabri 81f12e2a9f Add triangulate face example for OpenMesh 2015-05-14 11:12:53 +02:00
Sébastien Loriot a49312392a dump on std::cerr 2015-05-14 11:00:54 +02:00
Jane Tournois fdb98306ec add debugging code 2015-05-13 17:56:35 +02:00
Jane Tournois ce1316a94c fix debugging code 2015-05-13 17:55:55 +02:00
Jane Tournois 6c4785a29c On Polygon_mesh_processing_OpenMesh-GF: fairing pour openmesh 2015-05-13 16:10:21 +02:00
Jane Tournois 64291eceb0 Merge branch 'Polygon_mesh_processing_OpenMesh-GF' of github.com:CGAL/cgal-public-dev into Polygon_mesh_processing_OpenMesh-GF
Conflicts:
	Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/stitch_borders.h
2015-05-13 10:32:57 +02:00
Jane Tournois 664b712f83 fix compilation 2015-05-13 10:27:30 +02:00
Andreas Fabri 81318a1cfd more small examples for degenerate meshes 2015-05-13 09:29:39 +02:00
Andreas Fabri 1472ec273c cleanup 2015-05-12 19:33:35 +02:00
Andreas Fabri acd5c4c336 WIP (loops) add remove_degeneracies for OpenMesh 2015-05-12 19:33:02 +02:00
Andreas Fabri 684890d415 make stitching work for OpenMesh 2015-05-12 17:49:39 +02:00
Jane Tournois c4e9b7412c Merge branch 'Polygon_mesh_processing_OpenMesh-GF' of github.com:CGAL/cgal-public-dev into Polygon_mesh_processing_OpenMesh-GF 2015-05-12 17:25:30 +02:00
Jane Tournois 905d6d5461 use user-given vertex point map in weights.h 2015-05-12 17:00:36 +02:00
Andreas Fabri 94183e696c WIP (does not compile yet) Add stitch borders OpenMesh example 2015-05-12 16:24:28 +02:00
Andreas Fabri c0ccd47d78 Add point inside OpenMesh example 2015-05-12 15:23:33 +02:00
Andreas Fabri c5d8d81a4b add hole filling example for Surface_mesh 2015-05-12 12:34:26 +02:00
Andreas Fabri 797e51ae62 pass vertex point pmap 2015-05-11 17:05:02 +02:00
Andreas Fabri f88ff84d36 move the property map class to a CGAL header file 2015-05-11 14:57:14 +02:00
Andreas Fabri b0f21fcf34 add hole filling example 2015-05-11 13:04:48 +02:00
Andreas Fabri 9906380242 add hole filling example 2015-05-11 13:04:36 +02:00
Andreas Fabri 6ad5ff4f55 First example for PMP and OpenMesh 2015-05-11 12:28:39 +02:00
Andreas Fabri 238e054ec5 WIP: Add example using OpenMesh (won't compile as we need a wrapper for property maps 2015-05-11 09:36:44 +02:00
Jane Tournois 1e4405823c fix 10% of the vertices still does not prevent from shrinking, but it's better 2015-05-05 17:31:22 +02:00
Jane Tournois e211747d51 fix extremal vertices when fairing is launched on the complete polygon mesh
this is not enough to prevent the mesh from shrinking, though fixed vertices
keep it from shrinking to a single point
2015-05-05 16:53:55 +02:00
Jane Tournois 9800abb789 add simple fairing test 2015-05-04 15:51:05 +02:00
Jane Tournois 187895af98 fix dependencies 2015-04-28 15:11:10 +02:00
Jane Tournois ac86f5d5b8 attempt to get the CDT_2 link 2015-04-28 13:49:36 +02:00
Jane Tournois 13dd4516f9 fix indentation in code 2015-04-28 13:47:48 +02:00
Jane Tournois 0de4e59e47 stitch borders doc 2015-04-28 10:18:24 +02:00
Jane Tournois bc03c17492 update range type 2015-04-28 10:14:09 +02:00
Jane Tournois 8e3166fd6c update range documentation 2015-04-28 08:53:23 +02:00
Jane Tournois 5c3b5d9265 update doc for Range 2015-04-28 08:48:05 +02:00
Jane Tournois 47472fcdc7 use const ref 2015-04-28 08:46:43 +02:00
Jane Tournois 9598cdfaf2 update Range doc 2015-04-28 08:43:44 +02:00
Jane Tournois a5b8f4f218 use const ref 2015-04-28 08:42:07 +02:00
Jane Tournois cf5a48078d update doc to use CGAL::Range concept 2015-04-28 08:39:08 +02:00
Jane Tournois 8da159dbe3 use const ref everywhere for ranges
and add missing function refine() with no named parameters
2015-04-28 08:21:34 +02:00
Jane Tournois 7172b1dc64 remove todo : it's ok 2015-04-10 17:10:29 +02:00
Jane Tournois d7be8a84d5 remove todo
was concerning the case where we have more than 1 connected component
2015-04-10 17:03:47 +02:00
Jane Tournois 18ffd1bad0 Merge branch 'Polygon_mesh_processing-GF' of github.com:CGAL/cgal-dev into Polygon_mesh_processing-GF 2015-04-10 16:58:44 +02:00
Jane Tournois 6378a51191 move update of the status outside of the constructor 2015-04-10 16:58:18 +02:00
Sébastien Loriot 2430e91605 remove the template to avoid misunderstanding 2015-04-10 16:43:00 +02:00
Jane Tournois 7f6b725e93 use boost::none and cut too long lines 2015-04-10 15:42:11 +02:00
Jane Tournois 07b935a4b4 example fixed 2015-04-10 13:03:07 +02:00
Jane Tournois 4f98659653 example fixed. The numbers were just too high 2015-04-10 13:02:01 +02:00
Jane Tournois cff0047b32 bug fixed 2015-04-10 12:35:36 +02:00
Jane Tournois 306767033b fix triangulate_faces
(had been broken since 5406cde0956f84f39890b97937f76b90b19eb494)
and clean a bit indentation
2015-04-10 12:33:44 +02:00
Jane Tournois 70f206ba9b fix compilation 2015-04-10 11:22:04 +02:00
Andreas Fabri d9b67fcb0d check that the halfedge is not a border halfedge 2015-04-09 14:30:47 +02:00
Sébastien Loriot 4e51cd89bb test is_border before using the face 2015-04-09 10:47:11 +02:00
Sébastien Loriot e0856dff1d update the procedure to remove null edge which collapse is topologically invalid
When removing a null edge which collapse is not topologically valid,
it might happen that the set of triangles incident to the endpoints
of the edge is not a topological disk. With this code we remove
parts that are "inside" the topological disk we target.
The heuristic used is to remove component that are the smallest,
counting the number of faces
2015-04-07 11:06:42 +02:00
Jane Tournois 94bc90f933 fix named parameter name 2015-04-03 16:57:40 +02:00
Sébastien Loriot a49df9e10b kernel -> geom_traits in the doc 2015-04-03 16:50:49 +02:00
Jane Tournois 70951db816 improve the display of named parameters
rename Kernel to GeomTraits
2015-04-03 16:37:22 +02:00
Jane Tournois a6698298a7 layout of named parameters : clickable in the documentation of functions,
and looking like usual parameters in the NamedParameters description page
2015-04-03 16:16:42 +02:00
Jane Tournois 15c809a49c (doc) triangulated surface mesh 2015-04-03 15:10:26 +02:00
Jane Tournois 2e038ca831 documentation : TriangleMesh is a "triangulated surface mesh" 2015-04-03 14:53:18 +02:00
Jane Tournois 01d32e4101 Merge branch 'Polygon_mesh_processing-GF' of github.com:CGAL/cgal-dev into Polygon_mesh_processing-GF 2015-04-03 14:05:48 +02:00
Jane Tournois a4dedeb691 documentation fixes 2015-04-03 14:05:22 +02:00
Jane Tournois ad963f9b52 make doc uniform 2015-04-03 13:06:37 +02:00
Jane Tournois 70794487d5 rename kernel to geom_traits
and fix documentation links
2015-04-03 13:00:54 +02:00
Jane Tournois 0e674d879f replace vector with range in stitch_borders
and start fixing PackageDescription.txt
2015-04-03 12:46:30 +02:00
Andreas Fabri 3801b8316b typo 2015-04-03 10:21:25 +02:00
Andreas Fabri db614217c3 typos 2015-04-03 10:14:38 +02:00
Sébastien Loriot 2cdbc92fac update history 2015-04-02 07:56:50 +02:00
Sébastien Loriot 67b1ed8b1b fix distance call 2015-04-02 07:48:26 +02:00
Sébastien Loriot 4666987177 fix for the previous commit 2015-04-02 07:47:48 +02:00
Sébastien Loriot 6a375326fa rename named param kernel to geom_traits and fix compilation issues 2015-04-02 07:33:24 +02:00
Sébastien Loriot 6413af6a04 add missing anchor name 2015-04-02 07:33:24 +02:00
Jane Tournois f0702de4d4 Merge branch 'Polygon_mesh_processing-GF' of github.com:CGAL/cgal-dev into Polygon_mesh_processing-GF 2015-04-01 18:35:22 +02:00
Jane Tournois 9b5ae3f601 remove kernel traits from code 2015-04-01 18:34:59 +02:00
Sébastien Loriot c04077e7af use macro for documenting named parameters 2015-04-01 18:17:07 +02:00
Jane Tournois 9f1f8ae95d add random access range
and use boost::size instead of distance
2015-04-01 18:11:39 +02:00
Jane Tournois 49e14815d4 add info about mandatory internal property map 2015-04-01 18:01:33 +02:00
Jane Tournois 0f2ea23737 add short implementation history 2015-04-01 17:46:13 +02:00
Jane Tournois 24bde0607b distinguish VertexPointMap between the readable (const) and writable (non-const)
property maps
2015-04-01 17:29:18 +02:00
Jane Tournois 570e68d4d0 remove todo (done!) 2015-04-01 17:10:04 +02:00
Jane Tournois 8ee2b97324 move subsection title 2015-04-01 17:07:25 +02:00
Jane Tournois 3b45828ee4 Merge branch 'Polygon_mesh_processing-GF' of github.com:CGAL/cgal-dev into Polygon_mesh_processing-GF 2015-04-01 16:57:58 +02:00
Jane Tournois 09e49c141c remove useless \cgal 2015-04-01 16:55:53 +02:00
Sébastien Loriot 2869362f9e fix authors 2015-04-01 16:55:04 +02:00
Sébastien Loriot 4fb57e6a92 add missing example 2015-04-01 16:49:30 +02:00
Jane Tournois 234ff51662 remove useless typedefs 2015-04-01 16:44:37 +02:00
Jane Tournois e4ba8b4c47 document remove_degenerate_faces 2015-04-01 16:41:49 +02:00
Jane Tournois 8f595e6e14 update todo 2015-04-01 16:10:12 +02:00
Jane Tournois eb2954c7bf add namespace Polygon_mesh_processing and add nested list 2015-04-01 15:59:33 +02:00
Jane Tournois dd4028917d Merge branch 'Polygon_mesh_processing-GF' of github.com:CGAL/cgal-dev into Polygon_mesh_processing-GF 2015-04-01 15:25:05 +02:00
Jane Tournois e379b164df add section to user manual 2015-04-01 15:24:42 +02:00
Andreas Fabri 2a31a4f169 Add Surface_mesh to dependencies 2015-04-01 15:20:12 +02:00
Jane Tournois a6414a518b add precondition 2015-04-01 15:15:47 +02:00
Jane Tournois ebda288019 (doc) add missing parameter 2015-04-01 15:12:16 +02:00
Jane Tournois 388f155c1e add data about degeneracies 2015-04-01 15:09:36 +02:00
Jane Tournois 1a68852bef add type extractors and rename Kernel to type for GetKernel 2015-04-01 15:06:50 +02:00
Jane Tournois 6a4e2552db add named parameters and an example to remove_degenerate_faces 2015-04-01 14:45:46 +02:00
Jane Tournois 396d1875ab named parameters in self_intersections.h (code and doc) 2015-04-01 13:46:53 +02:00
Jane Tournois 9c5719a1b7 named parameters in stitch_borders (doc and code) 2015-04-01 10:56:20 +02:00
Jane Tournois e1426b2405 add type extractor for vertex point map 2015-04-01 10:30:55 +02:00
Jane Tournois 8b3e23a514 add kernel to the doc of hole filling functions. It already is in the code,
via triangulate_hole_polyline
2015-03-31 17:27:58 +02:00
Jane Tournois 9f3efdeba6 add kernel named parameter to triangulate_hole_polyline 2015-03-31 17:24:19 +02:00
Jane Tournois 959fa86bba add type extractors 2015-03-31 16:41:53 +02:00
Jane Tournois 3dfc70f390 complete documentation 2015-03-31 16:18:06 +02:00
Jane Tournois 47953d9ad1 remove template parameter OutputIteratorValueType
OutputIterator is the return type everywhere and should be enough
2015-03-31 16:14:39 +02:00
Jane Tournois 211ab25343 add named parameters to triangulate_hole_polyline 2015-03-31 16:10:13 +02:00
Jane Tournois 8402120efe fix previous commit 2015-03-31 16:08:37 +02:00
Jane Tournois 6c2a5f3dde typos 2015-03-31 15:16:35 +02:00
Jane Tournois 06bd8c0c40 Merge branch 'Polygon_mesh_processing-GF' of github.com:CGAL/cgal-dev into Polygon_mesh_processing-GF 2015-03-31 15:13:15 +02:00
Jane Tournois 985a3575f3 named parameters in triangulate_faces 2015-03-31 15:12:58 +02:00
Sébastien Loriot 26396392b5 bugfix: do not take the address of a temporary 2015-03-31 15:11:41 +02:00
Jane Tournois f6cf149b74 remove debugging code 2015-03-31 15:01:39 +02:00
Jane Tournois 75d39dfde1 named parameters in is_outward_oriented (doc and code) 2015-03-31 15:01:15 +02:00
Jane Tournois 52a0637bd2 reuse vertex_point_t from cgal_bgl_named_parameters instead of
the new vertex_point_map_t (removed)
2015-03-31 14:10:19 +02:00
Jane Tournois 4f370f25f2 document named parameters in connected_components.h 2015-03-31 12:41:17 +02:00
Jane Tournois afa89bcafa introduce named parameters in connected_component 2015-03-31 12:15:43 +02:00
Jane Tournois 8d60913c43 introduce named parameters in keep_largest_connected_components 2015-03-31 12:09:35 +02:00
Jane Tournois cbfef8b105 introduce named parameters for connected_components 2015-03-31 11:34:19 +02:00
Jane Tournois 7147ab5fcf Merge branch 'Polygon_mesh_processing-GF' of github.com:CGAL/cgal-dev into Polygon_mesh_processing-GF 2015-03-30 16:56:33 +02:00
Sébastien Loriot 4c3a2f69c7 if eigen is not here the version macro is not available 2015-03-30 16:34:01 +02:00
Sébastien Loriot d8ff8f69e2 add draft implementation for approximated Hausdorff distance 2015-03-30 15:58:29 +02:00
Sébastien Loriot f119e8faec add a function to remove degenerate triangles 2015-03-30 15:56:45 +02:00
Sébastien Loriot 1d3eb35d81 add an overload to compute self-intersections of a subset of faces 2015-03-30 15:44:57 +02:00
Sébastien Loriot 0aba363223 hack to allow compilation
it's a hack because it only works for pmap with no state
2015-03-30 14:51:40 +02:00
Sébastien Loriot 8f046d3725 we cannot use an argument in a function to feed a default parameter value 2015-03-30 14:51:11 +02:00
Sébastien Loriot c37b84116e do not use a function declared only after 2015-03-30 14:50:41 +02:00
Jane Tournois ee26f71ad7 add default for ecmap and remove one overload 2015-03-30 14:49:22 +02:00
Jane Tournois 89753dfe94 add default ecmap to documentation 2015-03-30 14:43:40 +02:00
Jane Tournois 64391bea36 add info about property map 2015-03-30 14:22:31 +02:00
Jane Tournois 5a5bccf888 add description of return type 2015-03-30 13:54:12 +02:00
Jane Tournois f3f1b12376 remove from doc parameters that have become useless w/ named params 2015-03-30 10:58:43 +02:00
Jane Tournois bcb63ac70f document named parameters 2015-03-30 10:35:50 +02:00
Jane Tournois ceda35d9dd use named parameters in compute_normal.h functions
todo : complete documentation
2015-03-26 17:02:00 +01:00
Jane Tournois b57f2df027 triangulate_refine_and_fair_hole delegates everything so vertex point map
is already handled
2015-03-26 12:44:44 +01:00
Jane Tournois 993cb4f552 add vertex point map in triangulate_and_refine_hole 2015-03-26 12:42:35 +01:00
Jane Tournois c19cfd01d0 nothing to do for triangulate_and_refine_hole. It delegates 2015-03-26 12:22:53 +01:00
Jane Tournois bd5fef8cc5 rename and reindent 2015-03-26 12:20:00 +01:00
Jane Tournois 3ab662ce03 add vertexpointmap to refine code
this is a temporary version until we know how to get the type of a named parameter
2015-03-26 12:15:17 +01:00
Jane Tournois 21606b28c0 add VertexPointMap to the code of self intersections.
note this version is temporary because it will be using named parameters
2015-03-26 12:02:17 +01:00
Jane Tournois 59cbb9403f add VertexPointMap in fairing code 2015-03-26 11:31:08 +01:00
Jane Tournois b423b4196c add kernel to the list of documented named parameters 2015-03-26 09:44:02 +01:00
Jane Tournois a7c8c0eccb add image to user manual for self intersections 2015-03-24 17:50:59 +01:00
Jane Tournois ba62737f84 add missing link to orientation section 2015-03-24 17:35:20 +01:00
Jane Tournois c41c797ca0 remove "max" figures 2015-03-24 17:31:18 +01:00
Jane Tournois 0f91dbbb6a move hole filling figure to hole filling section 2015-03-24 17:30:08 +01:00
Jane Tournois 3b8dd8665a add authors 2015-03-24 17:22:27 +01:00
Jane Tournois 9a76dd6439 add intro to user manual 2015-03-24 17:17:10 +01:00
Jane Tournois 0ca049c423 fix a link 2015-03-24 16:28:11 +01:00
Jane Tournois 0d4a033a75 doc about named parameters 2015-03-24 16:24:26 +01:00
Jane Tournois a8c86f9e56 reorganize doc to avoid warnings 2015-03-24 16:05:06 +01:00
Andreas Fabri 7bbe486565 capitalize words in sections 2015-03-21 22:53:54 +01:00
Jane Tournois ae4b306591 add more about bgl named parameters 2015-03-20 18:26:48 +01:00
Jane Tournois 0aaa2ea7bd how to 2015-03-20 17:07:19 +01:00
Jane Tournois bb9acbe424 fix solver doc 2015-03-20 16:38:09 +01:00
Jane Tournois 3879c520f7 better document density_control_factor 2015-03-20 16:22:21 +01:00
Jane Tournois e26b80e365 add vertex_point_map to the documentation of self_intersections functions 2015-03-20 15:57:36 +01:00
Jane Tournois 11b8f5ca72 document named parameters for all functions in which they are implemented 2015-03-20 15:44:20 +01:00
Jane Tournois cc78b0c136 document BGL named parameters for triangulate_hole 2015-03-20 15:14:39 +01:00
Jane Tournois 3194a38db8 add named bgl parameters 2015-03-20 12:22:32 +01:00
Jane Tournois d913b48d98 introduce bgl named function parameters
and implement them for hole filling, refine and fair functions
2015-03-20 09:52:54 +01:00
Jane Tournois e9c72794af Revert "move implementation files"
This reverts commit 9462d58a140e9d0efc38c10371f5a8e6e5e0d3fd.

Conflicts:
	Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/refine.h

The files had been deleted instead of moved.
They are back
2015-03-19 11:13:57 +01:00
Jane Tournois d2a73301ef add everything to be tested 2015-03-19 10:14:50 +01:00
Sébastien Loriot 5b0030e256 update header path 2015-03-18 18:24:08 +01:00
Sébastien Loriot 1b766f2a90 improve connected component doc 2015-03-18 18:15:59 +01:00
Sébastien Loriot 54bc46aa9e update slicer doc 2015-03-18 18:03:52 +01:00
Sébastien Loriot 83bed5b427 update license headers 2015-03-18 17:23:43 +01:00
Sébastien Loriot 4c92719c99 do not document which files are included 2015-03-18 17:17:18 +01:00
Sébastien Loriot 7783670172 move header file 2015-03-18 17:14:33 +01:00
Sébastien Loriot 78f2283406 move header files 2015-03-18 17:11:45 +01:00
Sébastien Loriot 220cefb215 only Kernel is documented as nested type in Kernel_traits 2015-03-18 17:06:41 +01:00
Sébastien Loriot 6f146596a8 update polygon soup function doc 2015-03-18 17:06:26 +01:00
Sébastien Loriot 157bdbe7c0 update normal computation function doc 2015-03-18 17:05:50 +01:00
Sébastien Loriot a44f5fd3fc remove duplicated function 2015-03-18 17:05:25 +01:00
Sébastien Loriot f611f31b86 update orientation and stitch doc 2015-03-18 16:32:23 +01:00
Sébastien Loriot b0283d220e fix Point_inside_polygon_mesh doc 2015-03-18 15:19:59 +01:00
Sébastien Loriot 6d2c6df6ab rename header 2015-03-18 15:11:10 +01:00
Sébastien Loriot 61159ad4e6 fixes in self-itersection doc 2015-03-18 15:08:36 +01:00
Sébastien Loriot 838adad249 improve hole filling doc 2015-03-18 12:15:08 +01:00
Sébastien Loriot 73ea945a01 uniformize brief descriptions 2015-03-18 11:59:48 +01:00
Sébastien Loriot 9a9595e97e rename include guards 2015-03-18 11:53:04 +01:00
Sébastien Loriot 324839c8ae move header files 2015-03-18 11:51:33 +01:00
Sébastien Loriot e93e61230f improve triangulate_faces doc 2015-03-18 11:43:34 +01:00
Sébastien Loriot 262bcb0ce3 improve refine doc 2015-03-18 11:33:42 +01:00
Sébastien Loriot 0a0f0b1e56 replace FAIRING_CONTINUITY by an unsigned int 2015-03-18 11:26:10 +01:00
Sébastien Loriot dc9c394ea3 move implementation files 2015-03-18 10:53:27 +01:00
Sébastien Loriot 972542566e move enum 2015-03-18 10:52:58 +01:00
Sébastien Loriot 3ac659f94b improve fairing doc 2015-03-18 10:37:36 +01:00
Sébastien Loriot bd709caf3d improve default solver presentation and implementation 2015-03-18 10:36:40 +01:00
Sébastien Loriot 253b5eeb80 improve fairing doc 2015-03-18 10:24:30 +01:00
Sébastien Loriot 6fa8e17e52 add missing dependency 2015-03-18 10:22:01 +01:00
Sébastien Loriot bf9ef77fc9 add missing typename 2015-03-18 10:21:31 +01:00
Sébastien Loriot 2c2515860e remove commented lines 2015-03-18 10:21:13 +01:00
Sébastien Loriot 0e3d4586d4 fix doc warnings 2015-03-18 09:28:50 +01:00
Jane Tournois 24d962fef9 Merge branch 'Polygon_mesh_processing-GF' of github.com:CGAL/cgal-dev into Polygon_mesh_processing-GF 2015-03-17 18:22:24 +01:00
Jane Tournois c7637a8d60 connected components section 2015-03-17 18:22:06 +01:00