Commit Graph

1672 Commits

Author SHA1 Message Date
Andreas Fabri a80100ba41 Deal with constness so that it works with Polyhedron_3 as well 2018-05-28 16:49:53 +02:00
Maxime Gimeno 4efef4e15b Add a function generic_extrude_mesh() that takes up to 2 functors instead of a direction and a distance. 2018-05-28 16:49:52 +02:00
Maxime Gimeno 41d3c05f7f Add a functor to create the offset 2018-05-28 16:49:52 +02:00
Maxime Gimeno 828a7d2b73 clean-up 2018-05-28 16:49:52 +02:00
Maxime Gimeno 291039ba80 update doc 2018-05-28 16:49:52 +02:00
Maxime Gimeno 1851f35382 Add a function to PMP that extrudes a mesh along a direction at a given distance. 2018-05-28 16:49:51 +02:00
Laurent Rineau e86c3c4bba Merge pull request #3102 from afabri/Property_map-empty_vector-GF
Property_map: Fix make_property_map(std::vector&) for an empty vector
2018-05-28 13:58:47 +02:00
Laurent Rineau a7738b27c9 Merge pull request #3052 from maxGimeno/PMP-transform-GF
PMP: transform()
2018-05-28 13:58:16 +02:00
Laurent Rineau 851dfabd29 Merge pull request #2757 from maxGimeno/BGL-Add_facegraph_validity_check_function-GF
BGL:  Add a  FaceGraph validity check function
2018-05-28 13:58:07 +02:00
Maxime Gimeno 2adbfe0888 replace bool by cgal_no_property_::type in wrapper 2018-05-24 14:08:57 +02:00
Maxime Gimeno 57296468b1 Update doc for fimap 2018-05-24 12:46:16 +02:00
Maxime Gimeno 719033ad68 Create id-map on the fly if needed 2018-05-24 12:41:37 +02:00
Sébastien Loriot f03f2176dd do no collapse constrained edges
At the same time I removed halfedge_and_opp_removed since we don't
know prior to the collapse which edges are removed.
The only thing done by the function is to reset the status. This
is not an issue to remove it because halfedge_added is called
each time a new edge is created, thus a previous status cannot
be recovered by error.
2018-05-23 09:07:13 +02:00
Andreas Fabri 466a88077d An empty soup is a mesh 2018-05-22 17:48:36 +02:00
Andreas Fabri 9abafecf9a make the property map from the vector 2018-05-22 17:48:36 +02:00
Sébastien Loriot be42fa9147 update ecmap_ during the remeshing 2018-05-18 17:07:14 +02:00
Sébastien Loriot 90faf5d060 simplify initialization of CC 2018-05-18 14:10:31 +02:00
Sébastien Loriot 42de73320a only constrain edges split that were constrained before 2018-05-18 11:07:18 +02:00
Sébastien Loriot 43c6fd3635 make the projection optional 2018-05-18 10:59:26 +02:00
Maxime Gimeno 5fc0022d92 make copy_face_graph use NamedParameters 2018-05-17 10:49:58 +02:00
Laurent Rineau 5a5195a4f4
Merge branch 'master' into PMP-stitch_after_orient-GF 2018-05-15 16:11:14 +02:00
Jane Tournois 76fd482cce make collapse_constraints a parameter of collapse_short_edges
instead of a remesher global parameter
2018-05-15 12:52:32 +02:00
Sébastien Loriot e08c1cdc4d add an option to prevent the collapse of constrained edges 2018-05-15 12:21:05 +02:00
Jane Tournois 35125cd9a5 remove todo done by this PR 2018-05-15 11:23:46 +02:00
Jane Tournois fbd982f7d8 document undocumented named parameters
and add extra info about split edges
2018-05-15 11:22:08 +02:00
Sébastien Loriot 73db555c5e unconstrained an edge to be collapsed 2018-05-15 10:30:40 +02:00
Sébastien Loriot ac8fbfd6aa add a condition to make sure the flip does not create a non-manifold edge 2018-05-15 09:48:12 +02:00
Sébastien Loriot 6b601ccf80 update after Jane's review 2018-05-14 09:51:26 +02:00
Maxime Gimeno 9e78cb49c1 Rename Mesh in PolygonMesh for consistency with the rest of the package 2018-05-07 12:51:36 +02:00
Maxime Gimeno cb3b060d53 fix the doc 2018-05-07 12:51:36 +02:00
Maxime Gimeno ca267506f8 Fix doc 2018-05-07 12:51:36 +02:00
Sébastien Loriot b2fa6680d7 typo 2018-05-07 12:51:35 +02:00
Maxime Gimeno 3ca3d11512 Replace the tparam Transformation by any Functor with an operator()(Point_3) and use that operator instead of .transform() in the impl. 2018-05-07 12:51:35 +02:00
Maxime Gimeno 2f7d66e530 Clean-up 2018-05-07 12:50:41 +02:00
Maxime Gimeno 72c31ebfac Add a function in PMP to apply a CGAL::Aff_transformation_3 to a mesh. 2018-05-07 12:50:41 +02:00
Sebastien Loriot 80acabc4b4
Merge pull request #3065 from maxGimeno/PMP-Do_intersect_with_different_vpm-GF
PMP: do_intersect() work with 2 types of VPM
2018-05-07 11:47:29 +02:00
Sebastien Loriot 1d6918ff4f
Merge pull request #2895 from kkatrio/triangulate_faces_fix
Triangulate faces : CDT2 / hole filling
2018-05-07 11:41:58 +02:00
Maxime Gimeno 9327e470c1 Fix doc 2018-05-04 16:11:25 +02:00
Maxime Gimeno 47635f11fe Take fimap into account and add a test. 2018-05-03 14:55:49 +02:00
Maxime Gimeno 29e909b87b Treat nm edges 2018-05-03 12:49:34 +02:00
Maxime Gimeno 861a6a16c5 Fixes 2018-05-03 12:49:34 +02:00
Maxime Gimeno 4a8375ce85 Optimize 2018-05-03 12:49:34 +02:00
Maxime Gimeno 68de1819cf Move the code to the PMP functio nand document. 2018-05-03 12:49:34 +02:00
Maxime Gimeno 132cf694a0 remove is_valid() from the graph_traits 2018-05-03 12:03:14 +02:00
Maxime Gimeno 6dfa8d0ba3 replace CGAL_is_valid(Mesh) by CGAL::is_valid_polygon_mesh(Mesh) 2018-05-03 12:03:14 +02:00
Sébastien Loriot c3255eee91 document projection functor named parameter 2018-05-01 14:15:27 +02:00
Sébastien Loriot ec4675b451 do not build the aabb_tree and the cc map if not needed 2018-05-01 13:50:49 +02:00
Sébastien Loriot 54b6eb0fbc handle case when there are no constrained edges 2018-05-01 13:50:43 +02:00
Maxime Gimeno 7e2255f797 do_intersect for 2 meshes work with 2 different types of VPM as long as their value_type is the same 2018-04-30 10:39:47 +02:00
Sébastien Loriot ab9d668f52 first solution to correctly re-constrain edges refined 2018-04-29 13:13:58 +02:00
Sébastien Loriot 95d76709e8 isotropic remeshing can now use a user defined projection functor
you can pass it using a named parameter
2018-04-27 16:20:54 +02:00
Mael Rouxel-Labbé a0427ec756 Fixed abusing Triangulation_cell_base_3 for Delaunay triangulations
TriangulationCellBase_3 does not request a circumcenter;
DelaunayTriangulationCellBase_3 does.

Delaunay_triangulation_3 only compiled because
Triangulation_cell_base_3 (and Triangulation_ds_cell_base_3 !)
provided circumcenter() operators and DT3 inherited T3's TDS.

- The circumcenter() functions are removed where they shouldn't exist
- DT3 uses DT_cell_base_3 as cell base instead of T_cell_base_3
- Concepts/Classes that supposedly only required TriangulationCellBase_3
  and then built Delaunay triangulations with that (Alpha Shapes, etc.)
  are upgraded to request DelaunayTriangulationCellBase_3 (anyway, it
  wouldn't compile if you actually provided a model of
  TriangulationCellBase_3)
- Fixed various wrong templates in classes/concepts such as
  MeshVertexBase_3 not refining RegularTriangulationVertexBase_3
  and (only in the doc) defaulting to Triangulation_vertex_base_3
- Removed the deprecated class (for 4+ years) T_cell_base_with_circumcenter
2018-04-26 13:21:53 +02:00
Mael Rouxel-Labbé 17d46e9211 Merge branch 'Periodic_3_mesh_3-Feature-MBogdanov-old' into Periodic_3_mesh_3-Feature-MBogdanov 2018-04-26 11:55:17 +02:00
Laurent Rineau 92a7449cac Merge pull request #3006 from sloriot/PMP_PSP-fixes_for_release
Pmp psp fixes for release
2018-04-24 17:34:21 +02:00
Andreas Fabri 37e677e989 Fix compilation error with VC2017 and -permissive- It looks like a compiler bug though 2018-04-13 12:01:23 +01:00
Sébastien Loriot 348c0f92fa do not overwrite output iterator, return it directly 2018-04-10 17:32:22 +02:00
Laurent Rineau d057f6d9f1 Merge pull request #2958 from sloriot/PMP-coref_more_coplanar_fixes
Update incorrectly handled coplanar intersection computation
2018-03-28 17:46:24 +02:00
Laurent Rineau 237735ab73 Merge pull request #2946 from afabri/CGAL-dependencies-GF
Move properties from Mesh_3 to BGL, Polyhedron_3 and Surface_mesh
2018-03-27 10:35:23 +02:00
Sébastien Loriot 8553713885 update incorrectly handled coplanar intersection computation
follow up of 6bb6f470c4
2018-03-26 11:20:16 +02:00
Laurent Rineau cd6fe20bd4 Merge branch 'releases/CGAL-4.11-branch' 2018-03-26 11:03:37 +02:00
Laurent Rineau f1b94f0a2b Merge pull request #2919 from sloriot/PMP-orient_handle_isolated_vertices
Handle isolated vertices
2018-03-26 10:56:05 +02:00
Laurent Rineau 1ef766c19b Merge pull request #2932 from kkatrio/null-edge-hole-filling
PMP hole filling: null edge
2018-03-26 10:55:58 +02:00
Laurent Rineau 4b2e2db728 Merge pull request #2945 from sloriot/PMP-remove_si_improvements
Improvement of self-intersection removal using local remeshing
2018-03-26 10:55:51 +02:00
Andreas Fabri 8c41669fb7 move properties from Mesh_3 to BGL, Polyhedron_3 and Surface_mesh 2018-03-22 16:37:37 +01:00
Sébastien Loriot 640e78f92b add an option to allow to change the genus
this is useful if the surface has some small artefact
that is not a topological disk
2018-03-22 11:15:47 +01:00
Sébastien Loriot 885f485ce1 use named parameter instead of default int and bool 2018-03-22 10:50:48 +01:00
Sébastien Loriot 56dca973be add a debug function to dump faces of a cc into an OFF 2018-03-22 10:24:24 +01:00
Sébastien Loriot 6bb6f470c4 update incorrectly handled coplanar intersection computation 2018-03-21 16:51:24 +01:00
Sébastien Loriot dabd127d12 fix typo in the name of an internal function 2018-03-19 15:24:04 +01:00
Sébastien Loriot d2e02c1eee compactify the domain to be remeshed
we additional select faces that are incident to the selection
that are strictly  inside the bounding box of the initial selection
2018-03-19 15:18:27 +01:00
Konstantinos Katrioplas 61735be71c deny triangulation for input of 3 points or less when using all search space 2018-03-16 14:08:43 +01:00
Laurent Rineau 9708c41ad1 Off-topic, Mesh_3: fix a bug in detect_features
The commit cba3b1c20c from the PR #2336
was incomplete: there are two overloads of `sharp_call(..)` and it
fixed only one occurrence.
2018-03-15 15:27:07 +01:00
Mael Rouxel-Labbé 8646350d47 Merge branch 'Periodic_3_mesh_3-Feature-MBogdanov-old' into Periodic_3_mesh_3-Feature-MBogdanov 2018-03-15 14:42:21 +01:00
Sébastien Loriot 613eca7448 do not use Euler::add_face + reuse edges and faces scheduled for removal 2018-03-14 14:07:40 +01:00
Sébastien Loriot 0d8e21f25c avoid recomputing self-intersections if not needed 2018-03-14 10:44:44 +01:00
Sébastien Loriot 5af7b56589 expand the selection only by CC (instead of globally) 2018-03-14 10:22:24 +01:00
Sébastien Loriot c2e849935e handle isolated vertices 2018-03-12 15:25:46 +01:00
Sébastien Loriot e86ca2eec2 add the usage of the CDT as an undocumented option 2018-03-12 10:43:57 +01:00
Sébastien Loriot 8be7c2b2d1 add convenience header 2018-03-12 10:27:38 +01:00
Sébastien Loriot ee07db2b1e protect code using DT3 with the macro disabling its use 2018-03-12 10:24:35 +01:00
Konstantinos Katrioplas 6ef74c39b5 conditional inclusion of cdt2 headers 2018-03-08 17:08:05 +01:00
Konstantinos Katrioplas 8cfa4e7577 correct return types 2018-03-07 10:42:46 +01:00
Sébastien Loriot 07a70919c2 do not expand/reduce all the time + handle nm vertices per cc 2018-03-06 18:37:09 +01:00
Laurent Rineau caca4d67de Merge pull request #2891 from sloriot/PMP-handle_deg_tri_self_inter
Handle degenerate faces in self-intersection tests
2018-03-06 16:23:32 +01:00
Laurent Rineau 81a7e2d737 Merge pull request #2888 from sloriot/PMP-autorefine_bugfixes
Autorefine bugfixes
2018-03-06 16:23:08 +01:00
Sébastien Loriot 7ab6120a0c workaround warning 2018-03-05 17:09:23 +01:00
Andreas Fabri 5d1cd90517 Add two typename 2018-03-05 14:17:26 +00:00
Konstantinos Katrioplas 8ccec9fe98 macro rename 2018-03-05 13:20:50 +01:00
Konstantinos Katrioplas 9224e83c0a clean up 2018-03-05 13:05:37 +01:00
Sébastien Loriot 8cc234fe26 handle degenerate faces 2018-03-02 15:45:34 +01:00
Sébastien Loriot 8817f067d1 mark vertices as terminal if incident to edge where the surface is pinched 2018-03-02 11:38:42 +01:00
Sébastien Loriot 26dec7527a prevent duplicated nodes at existing vertex between faces intersecting 2018-03-01 16:19:23 +01:00
Sébastien Loriot 29eeac3e3d make autorefinement working with exact constructions 2018-03-01 16:10:14 +01:00
Sébastien Loriot c668b90379 add assertion and fix comment 2018-03-01 16:09:55 +01:00
Sébastien Loriot e478e12471 do not use Euler::add_face 2018-03-01 15:38:26 +01:00
Sébastien Loriot da812c6b77 only remove the face if hole filling was successful 2018-03-01 14:14:36 +01:00
konstantinos katrioplas 833c54faef using triangulate_hole_polyline 2018-03-01 12:59:52 +01:00
Konstantinos Katrioplas a765b152e3 wip - testing dual 2018-02-28 13:47:10 +01:00
Konstantinos Katrioplas 39ab6e00f4 test triangle face 2018-02-28 11:54:11 +01:00
Konstantinos Katrioplas 1869830e72 hole filling impl 2018-02-28 10:53:51 +01:00
konstantinos katrioplas 36dd6e7bf9 setup mech and function with hole filling 2018-02-27 21:24:26 +01:00
konstantinos katrioplas eab0c12190 compiling 2018-02-27 20:28:27 +01:00
Konstantinos Katrioplas 2c86fd6c54 setup new function with cdt 2018-02-27 16:07:17 +01:00
Mael Rouxel-Labbé d9168d011c Merge branch 'Periodic_3_mesh_3-Feature-MBogdanov-old' into Periodic_3_mesh_3-Feature-MBogdanov 2018-02-23 18:24:39 +01:00
Laurent Rineau 9e8a40fc70 Merge pull request #2845 from sloriot/PMP-improve_autorefine_v2
Improve internal autorefinement function
2018-02-23 17:35:09 +01:00
Mael Rouxel-Labbé c28e05be0c Merge branch 'Periodic_3_mesh_3-Feature-MBogdanov-old' into Periodic_3_mesh_3-Feature-MBogdanov 2018-02-23 12:50:06 +01:00
Sébastien Loriot 51f4858f26 detect non-manifold edges that the hole filling would produce 2018-02-20 15:36:36 +01:00
Sébastien Loriot 6920f4be98 better handling of coplanar faces + throw when more than 2 faces sharing an edge 2018-02-20 11:15:21 +01:00
Sébastien Loriot ac5c061b4b fix warning 2018-02-19 18:04:55 +01:00
Sébastien Loriot 48e1d686a1 fix warning 2018-02-19 18:04:55 +01:00
Sébastien Loriot 32e74839df handle topology issue due to boundary cycle of edges 2018-02-19 18:04:55 +01:00
Sébastien Loriot c7b836570f clean up and simplify code 2018-02-19 18:04:55 +01:00
Maxime Gimeno e650284d3d Don't crash if cc_bordes_he is empty. 2018-02-19 18:04:55 +01:00
Maxime Gimeno d4f50b5b47 Don't use filtered_graph 2018-02-19 18:04:55 +01:00
Sébastien Loriot b1ee7fb7db remove trailing whitespaces 2018-02-19 18:04:55 +01:00
Sébastien Loriot 84a2e04afc simplying the sorting of points
lexicographic order is fine since extreme points are
already using this order
2018-02-19 18:04:55 +01:00
Sébastien Loriot 6e1b680058 handle case when face orientation around the cc of deg faces is incorrect 2018-02-19 18:04:54 +01:00
Maxime Gimeno cde00f7757 Clean-up and overload. 2018-02-19 18:04:54 +01:00
Maxime Gimeno 3fdc7b67b2 remove non_filled_holes 2018-02-19 18:04:54 +01:00
Sébastien Loriot 935bba4ad3 use dynamic property maps + clean up 2018-02-19 18:04:54 +01:00
Maxime Gimeno 2758143116 fixing the topology test. 2018-02-19 18:04:03 +01:00
Sébastien Loriot 209f1a246c iteratively remove degree 3 vertices incident to a degenerate face 2018-02-19 18:04:03 +01:00
Sébastien Loriot f3a3b5eb5e fix the collapsibility check of connected components of degenerate faces 2018-02-19 18:04:03 +01:00
Maxime Gimeno 59b72cb364 Add some enhancements to remove_self_intersections() 2018-02-19 18:04:02 +01:00
Sébastien Loriot 12c57b588a fix condition to drop patch with dangling edges 2018-02-19 09:34:46 +01:00
Sébastien Loriot c0fc3e92bf avoid identical faces in case of coplanar 2018-02-19 09:11:36 +01:00
Sébastien Loriot d785378bdd workaround issue with msvc 2018-02-15 17:06:31 +01:00
Sébastien Loriot 50dfffcedf Sort halfedge of coplanar faces intersecting in autorefinement case
Since the faces are coming from the same mesh...
2018-02-15 10:31:31 +01:00
Sébastien Loriot c20177c55d add TODO 2018-02-15 10:31:31 +01:00
Sébastien Loriot 3eb109a944 better handling of dangling edges 2018-02-15 10:31:31 +01:00
Sébastien Loriot e9596acaec fix issue with intersection edges not found
this happen when such an edge if not on the same
sheet (and would be found next thanks to the
multimap).
2018-02-15 10:31:31 +01:00
Sébastien Loriot e11a1d8617 fix patches to keep in coplanar cases 2018-02-15 10:31:31 +01:00
Sébastien Loriot 129b4c48fb use union find to track incident between patches and discard nested intersections 2018-02-15 10:31:31 +01:00
Sébastien Loriot 80d820a10e first version of autorefinement able to handle self-intersection of 3 faces
the code is not working with coplanar faces for now and does not handle
more that 3 faces meeting at a point not more that 2 triangles intersecting
along an edge
2018-02-15 10:29:27 +01:00
Sébastien Loriot 483f69728e Refresh branch 2018-02-12 22:21:38 +01:00
Laurent Rineau f310fc588d
Merge pull request #2690 from sgiraudot/Classification-ETHZ_random_forest-GF
Classification: ETHZ Random Forest
2018-02-01 17:35:30 +01:00
Simon Giraudot 6269309d86 Use CGAL include for boost counting/transform iterators everywhere 2018-01-23 11:09:52 +01:00
Laurent Rineau e72444ab60
Merge pull request #2709 from lrineau/CGAL-fix_merge_of_PR_2478-GF
Fix the merge of PR #2478 into releases/CGAL-4.11-branch
2018-01-22 10:06:21 +01:00
Laurent Rineau dd3357c508 Merge pull request #2738 from sloriot/PMP-distance_update_max
Make the update of the max value correct
2018-01-19 15:22:22 +01:00
Laurent Rineau 5b5002f694 Merge pull request #2738 from sloriot/PMP-distance_update_max
Make the update of the max value correct
2018-01-19 15:21:22 +01:00
Andreas Fabri 38b2e57b11 PMP 2018-01-17 17:59:35 +00:00
Laurent Rineau f7cbe80c7d Merge pull request #2711 from sloriot/PMP-Janes_commits
More verbose debug output
2018-01-17 10:43:06 +01:00
Sébastien Loriot 499f3c4604 make the update of the max value correct 2018-01-15 18:22:11 +01:00
Simon Giraudot ae41b4af74 Fix namespace in PMP 2018-01-10 16:38:35 +01:00
Mael Rouxel-Labbé b8df8ba29b Merge branch 'Periodic_3_mesh_3-Feature-MBogdanov-old' into Periodic_3_mesh_3-Feature-MBogdanov 2018-01-08 10:44:01 +01:00
Jane Tournois 2650a46d5f fix implicit conversion warning (size_type to bool) 2018-01-05 09:25:11 +01:00
Jane Tournois 4a8b735792 remove nested if, already tested 2018-01-05 09:25:11 +01:00
Jane Tournois b7e641ef6a add verbosity for debugging 2018-01-05 09:25:11 +01:00
Laurent Rineau 42b11ddf29 Revert the merge of PR #2478
This reverts the merge commit 46cc91e787 onto
488c3e2879.
2018-01-04 17:54:08 +01:00
Sébastien Loriot 9fe73a801e Merge pull request #2552 from maxGimeno/PMP_does_intersect-GF
PMP: do_intersect
2018-01-04 15:34:18 +01:00