Commit Graph

916 Commits

Author SHA1 Message Date
Jane Tournois 0baa89452d add info about self-intersections 2016-08-10 09:45:40 +02:00
Sebastien Loriot e819e65f96 Merge pull request #1187 from maxGimeno/Fix_deformation-GF
Polyhedron_demo: Enhance deformation
2016-06-22 13:18:31 +02:00
Sébastien Loriot 79ad1b2dc6 Merge pull request #1141 from janetournois/PMP-isotropic_remeshing_smoothing_options-jtournois
PMP isotropic_remeshing : smoothing options
2016-06-22 11:46:05 +02:00
Jane Tournois 85744d3c63 the validity of the vertex_is_constrained_map should be fixed
the problem was that we can't control which of va and vb will be vkept
when collape_edge is called
now it's clear wrt the constrained map
2016-06-21 11:19:41 +02:00
Jane Tournois be65dac810 don't use double but FT 2016-06-14 14:22:18 +02:00
Jane Tournois 6f46122f52 attempt to fix ambiguity warning 2016-06-14 14:17:42 +02:00
Jane Tournois 1e2e1f1dd2 rename dummy_named_params to named_params_base 2016-06-14 14:17:41 +02:00
Jane Tournois 5b41ca088b avoid stack overflow in Epeck due to += 2016-06-14 14:17:40 +02:00
Jane Tournois 3e620a07be WIP replace double by FT
the measures_test does not compile with this commit
2016-06-14 14:17:34 +02:00
Sébastien Loriot 6d42b1873b remove useless typedef instructions 2016-06-14 14:17:29 +02:00
Sébastien Loriot 5af65c983d remove useless default template argument 2016-06-14 14:17:28 +02:00
Sébastien Loriot c85c4e01ad remove useless comment and fix indentation 2016-06-14 14:17:27 +02:00
Andreas Fabri 702149cd93 Also test EPEC in the testsuite 2016-06-14 14:17:26 +02:00
Andreas Fabri 73fb767025 Change the @warning to what Laurent suggested 2016-06-14 14:17:24 +02:00
Jane Tournois 7b5ca9ed7f triangle_normal should return the normal with norm = area(triangle) 2016-06-14 14:17:20 +02:00
Jane Tournois d8f3da483b use kernel functors 2016-06-14 14:17:19 +02:00
Jane Tournois 630a8f4014 use kernel functors 2016-06-14 14:17:17 +02:00
Jane Tournois 6b284a8e0a update code from master after rebase, and use CGAL functors 2016-06-14 14:17:16 +02:00
Jane Tournois 0af657207b fix compilation and the use of Construct_sum_of_vectors_3 2016-06-14 14:17:15 +02:00
Jane Tournois f940302044 document that fairing is not exact 2016-06-14 14:17:12 +02:00
Jane Tournois 109b9fdfe7 use CGAL::approximate_sqrt(x) to replace CGAL::sqrt(to_double(x)) 2016-06-14 14:17:11 +02:00
Jane Tournois 4556530682 make a better use of geom_traits in compute_face_normal 2016-06-14 14:17:07 +02:00
Jane Tournois 211426e3fe fix compilation (extra */ added in comments) 2016-06-14 14:17:06 +02:00
Andreas Fabri ae1f695208 Document where sqrt is done approximately 2016-06-14 14:17:04 +02:00
Andreas Fabri 2c54acb056 Use to_double to make it work with Epec 2016-06-14 14:17:03 +02:00
Sebastien Loriot aeab78c74b Merge pull request #1143 from janetournois/PMP-isotropic_remeshing_speedup-jtournois
PMP isotropic_remeshing speedup. Don't use the MESH Halfedge_status
2016-06-09 16:21:09 +02:00
Sebastien Loriot 1ebaebc6aa Merge pull request #1101 from maxGimeno/Enhance_triangulate_facets-GF
Robustify triangulate facets
2016-06-08 09:50:48 +02:00
Jane Tournois 4e964ab64d don't use the MESH status
We now consider that MESH halfedges are the ones that are not in the patch,
i.e. not in the status map

halfedges with the MESH status are not used, apart from close to
PATCH_BOUNDARY edges.

this speeds up the isotropic remeshing algorithm, in particular when only
a small patch is remeshed
2016-06-07 16:18:42 +02:00
Jane Tournois 0811c2fb2c document named parameters for smoothing 2016-06-07 14:06:09 +02:00
Jane Tournois ccbdeb1419 doc : reorder named parameters 2016-06-07 12:42:16 +02:00
Jane Tournois 7fde6edb32 rename relaxation named parameters 2016-06-07 12:38:27 +02:00
Jane Tournois 5ab581dc1e be more verbose 2016-06-06 17:13:50 +02:00
Jane Tournois 4112b0295f add a named parameter to be able to run more than one laplacian iteration
at each isotropic_remeshing iteration
2016-06-06 13:58:54 +02:00
Maxime Gimeno 1741739449 Fixes the choice of the diagonal for a quad. 2016-05-26 16:50:49 +02:00
Sébastien Loriot 5f0a9dcbf3 Merge remote-tracking branch 'cgal/releases/CGAL-4.8-branch' 2016-05-24 16:54:58 +02:00
Maxime Gimeno 817155d7f0 Update doc 2016-05-24 08:40:14 +02:00
Jane Tournois acc7e16626 add more collapsibility tests 2016-05-23 17:09:19 +02:00
Maxime Gimeno 400f44c2a3 Make triangulate_faces() a boolean. 2016-05-23 16:36:07 +02:00
Maxime Gimeno 0a5bea6dba Use split_face if the facet is a quad. 2016-05-23 16:30:19 +02:00
Maxime Gimeno b63dae993a Make triangulate_face() a boolean 2016-05-23 15:36:14 +02:00
Jane Tournois ca3883b837 it is necessary to check that e is still collapsible
when it is poped out from the priority queue. Its situation may have changed
because of the changes that have been made in its neighborhood

+ checking that is_on_patch_border(next_on_patch_border(next(he, mesh_))
is useless, because next_on_patch_border is on patch border by definition

reorganize the collapsibility check
2016-05-23 12:17:48 +02:00
Jane Tournois f2fe1a69d0 fix assertion code 2016-05-20 12:24:28 +02:00
Jane Tournois aef3c6cc62 fix include 2016-05-20 12:23:42 +02:00
Jane Tournois 355c698185 avoid creating self intersections close to boundaries
the collapse step was still creating self-intersections
when it happened in a particular configuration close to boundary

# Conflicts:
#	Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h
2016-05-19 13:16:37 +02:00
Sébastien Loriot d892ef1a89 Merge pull request #1030 from janetournois/PMP-remeshing_with_patch_ids-jtournois
PMP : new features for isotropic_remeshing
2016-05-09 09:43:08 +02:00
Sebastien Loriot 7630d2a6fc Merge pull request #875 from sloriot/Triangulation_2_and_PMP-fix_Triangulation_2_projection_traits_3
PMP: make triangulate_faces works with non filtered kernels
2016-05-05 14:55:11 +02:00
Sebastien Loriot cba2fd46ca Merge pull request #1052 from janetournois/PMP-isotropic_remeshing_non_manifold_bug-jtournois
PMP : fix for isotropic_remeshing
2016-05-04 15:03:57 +02:00
Sébastien Loriot 3c8871f8a9 Merge pull request #739 from bo0ts/Pmp-poly_soup_poly_mesh-pmoeller
Add PMP function is_polygon_soup_a_polygon_mesh
2016-05-04 15:01:25 +02:00
Jane Tournois 32cbaf914b edges incident to boundary cannot always be flipped 2016-04-29 17:37:17 +02:00
Jane Tournois dab8b7e312 Merge branch 'PMP-remeshing_with_patch_ids-jtournois' of github.com:janetournois/cgal into PMP-remeshing_with_patch_ids-jtournois 2016-04-29 17:24:50 +02:00
Jane Tournois dbedd1358d edges incident to boundary cannot always be flipped 2016-04-29 17:14:02 +02:00
Sébastien Loriot 09e076922c remove compilation error and a conversion warning 2016-04-29 16:53:53 +02:00
Jane Tournois eb13dffd53 fix typo! 2016-04-29 16:30:19 +02:00
Sébastien Loriot cc7d686d16 remove unused typedefs 2016-04-29 14:01:52 +02:00
Jane Tournois eb1747b28b boost::size has compilation issues in boost 1.53 (see testsuite 4.9-Ic-29)
and FaceRange is model of Range, so .size() is available
2016-04-25 11:02:06 +02:00
Laurent Rineau 64ea03f9ec Fix a compilation error
`boost::size` does not exist unless `<boost/range/size.hpp>` is
included, at least on my machine.
2016-04-22 17:30:55 +02:00
Jane Tournois 99b7cb8216 check the face_index map to be checked actually is the internal map 2016-04-22 17:15:01 +02:00
Jane Tournois ccf66afe26 check face_index map is initialized
this is a minimal check, that checks that the 2 first faces of the range
do not share the same index
This test is not complete and the complete check should test that no 2 vertices
share the same index, but that's too costly to be worth it here
2016-04-22 16:25:17 +02:00
Jane Tournois 638b0ba9ab document that if face_index map exists internally, it should be initialized 2016-04-22 15:31:12 +02:00
Jane Tournois 7749a3402b Polygon should also be RandomAccessContainer 2016-04-22 15:04:10 +02:00
Jane Tournois 1c614bb0dc replace std::vector<Point> and std::vector<Polygon> with appropriate range concepts 2016-04-22 12:43:47 +02:00
Jane Tournois 9cf539c8a9 change requirement of PolygonRange
operator[], size(), begin() and end() are all available in RandomAccessContainer
2016-04-22 12:26:03 +02:00
Jane Tournois 5b56f2a6a8 fix doc 2016-04-22 11:18:50 +02:00
Jane Tournois bfe4d815a2 document face_patch_map 2016-04-22 09:53:20 +02:00
Jane Tournois 21a869491b document face_patch_map 2016-04-21 16:00:40 +02:00
Jane Tournois 2b3b07a2f9 add mising timer start 2016-04-21 15:32:13 +02:00
Jane Tournois a829161ca1 avoid computing connected_components when it's not needed 2016-04-21 15:32:12 +02:00
Jane Tournois e7c9bab5ae avoid constructing the Border_constraint_pmap when it's not needed
i.e. when it's given in the named parameters
2016-04-21 15:32:11 +02:00
Jane Tournois 768c7439f7 make dealing with patch ids safer 2016-04-21 15:31:01 +02:00
Jane Tournois 1f0a11191d do not project back constrained vertices 2016-04-21 15:30:59 +02:00
Jane Tournois 2fb5fa4a26 ecmap_ will be updated at the end of the remeshing process
this "put" is useless
2016-04-21 15:29:56 +02:00
Jane Tournois f777c53b61 add stuff to verbose mode 2016-04-21 15:29:53 +02:00
Jane Tournois ba91119696 make sure an edge between two patches is considered a constraint 2016-04-21 15:28:33 +02:00
Sébastien Loriot ded29c7304 correct definition of Self 2016-04-21 15:26:55 +02:00
Jane Tournois 296bcdb04b back to previous version of Patch_id_property_map 2016-04-21 15:26:53 +02:00
Jane Tournois badfb8f2b8 remove default values. Values are given by every call to this constructor 2016-04-21 15:26:51 +02:00
Jane Tournois 5f5397a5d3 parameters pmesh and ecmap can't be used here 2016-04-21 15:25:29 +02:00
Jane Tournois f0bb4febb5 improve remeshing test and get() in pmap 2016-04-21 15:25:28 +02:00
Jane Tournois ee89276102 isotropic remeshing : introduce surface_patch ids as an input read write pmap 2016-04-21 15:23:20 +02:00
Jane Tournois c0f30e18a8 add constrained vertices to isotropic remeshing
those vertices cannot be modified
2016-04-21 15:21:29 +02:00
Jane Tournois 253d4f28a6 update the constraints property map after the end of remeshing 2016-04-21 15:10:02 +02:00
Jane Tournois 1a33081f79 transform EdgeIsConstrainedMap into a member variable 2016-04-21 15:00:46 +02:00
Sébastien Loriot 17edea6299 avoid copying the polygon vector
some functions of Polygon_soup_orienter have been made static
and the function duplicate_singular_vertices was partially
duplicated (no other choice to have the polygon container const)
2016-04-19 20:06:13 +02:00
Sébastien Loriot 592c2bf454 remove the need to set the points 2016-04-19 19:25:29 +02:00
Jane Tournois 269efaa60b improve doc 2016-04-19 11:58:24 +02:00
Jane Tournois 8708376798 check that there is no polygon with twice the same vertex 2016-04-19 11:06:01 +02:00
Jane Tournois 068d93798a edge_map should be filled to be able to circulate around vertices 2016-04-19 10:51:03 +02:00
Jane Tournois 8a87c34f1b use orienter to test manifold-ness 2016-04-18 18:03:24 +02:00
Jane Tournois fb8ac5a9e6 add a parameter to duplicate_singular_vertices to avoid duplicating when required 2016-04-18 18:02:27 +02:00
Philipp Möller b0fb4999f0 Add changes required by review 2016-04-18 12:08:48 +02:00
Philipp Möller ec25aab2d2 Replace vector<vector<size_t>> by a nested range 2016-04-18 12:08:47 +02:00
Philipp Möller f1158a2dfe Explain missing range of points 2016-04-18 12:08:45 +02:00
Philipp Möller 74edea7fa2 Use is_polygon_soup_a_polygon_mesh as pre 2016-04-18 12:08:44 +02:00
Philipp Möller 01190b1027 Fix doc typo 2016-04-18 12:08:41 +02:00
Philipp Möller a9a651d5c5 Enable doc 2016-04-18 12:04:57 +02:00
Laurent Rineau 3bd9e6d557 Merge pull request #995 from janetournois/PMP-fix_compute_normals-jtournois
(Merged from remote-tracking branch 'cgal/releases/CGAL-4.8-branch')
2016-04-14 15:14:45 +02:00
Jane Tournois c7c8c86a9e remove unused variable 2016-04-12 18:17:05 +02:00
Jane Tournois f85d783613 improve computation of a face normal for non-triangular faces
triangulating the face naively around v is much simpler and more accurate than
iterating on prev/curr/next vertices inside the face
2016-04-11 12:15:59 +02:00
Laurent Rineau 6164c91227 Merge changes to PMP from branch 'releases/CGAL-4.8-branch'
Merges:
> 621e16ed Merge pull request #973 from janetournois/Polyhedron_demo-fix_isotropic_remeshing_plugin-jtournois
> 4d1ac46 Merge pull request #974 from janetournois/PMP-complete_remeshing_test-jtournois
2016-04-04 11:22:09 +02:00
Jane Tournois 36c3a7a758 remove unused variable 2016-04-01 10:02:21 +02:00
Jane Tournois f6e312fc86 deal with the degenerate face case, and avoid division by 0
the only way to catch it would be to check that the result is not NaN,
probably not a good idea, in particular for vertex normals

and
Revert "deal with the case where one face incident to v is degenerate"

This reverts commit 52105868b31a2685795e92d9caf4bfe251bcf75c.
2016-03-31 12:26:39 +02:00
Jane Tournois 650cb1d752 change the way we deal with degenerate faces
some may remain and we don't know how to remove them yet
2016-03-31 12:26:19 +02:00
Jane Tournois caa0aaeeb0 fix test for projection
a vertex is reprojected if it is on PATCH, and if it is not constrained
(and this test is the filter to "continue" the loop)
2016-03-31 12:26:01 +02:00
Jane Tournois 1e0b28601a make the flipping step more verbose (see progress) 2016-03-31 12:25:42 +02:00
Jane Tournois e3e03f06f4 deal with the case where one face incident to v is degenerate 2016-03-31 12:25:22 +02:00
Laurent Rineau ae33af9222 Merge branch 'releases/CGAL-4.8-branch'
Merges the following fixes:
> 4025913 Merge pull request #949 from janetournois/BGL-fix_conversion_of_boundary_halfedges-jtournois
> 9c62628 Merge pull request #948 from janetournois/PMP-fix_assertion_isotropic_remeshing-jtournois
> f61402d Merge pull request #929 from sloriot/Polyhedron_demo-Isotropic_remeshing_preserve_duplicates

See also:

* https://github.com/CGAL/cgal/pull/949
* https://github.com/CGAL/cgal/pull/948
* https://github.com/CGAL/cgal/pull/929
2016-03-31 10:55:12 +02:00
Jane Tournois cc28746e18 fix the case where both faces incident to h are degenerate before the flip
and none of them is degenerate after the flip
2016-03-25 10:39:01 +01:00
Laurent Rineau ad73334a0f Merge pull request #821 from afabri/CGAL_property_map-GF
Include consistently <CGAL/property_map.h>
2016-03-24 11:29:09 +01:00
Sébastien Loriot b0d43337de wrap the set in a shared_ptr because a property map should be lightweight 2016-03-17 13:09:39 +01:00
Sébastien Loriot 7680c6f168 use a set instead of a map to avoid keeping handles to removed elements
moreover the map becomes sensitive to the input
2016-03-17 12:58:02 +01:00
Sebastien Loriot ef3721a581 Merge pull request #881 from janetournois/PMP-isotropic_remeshing_reduce_aabbtree-jtournois
PMP isotropic remeshing : reduce the internal aabb_tree to the input face_range
2016-03-04 13:28:11 +01:00
Sebastien Loriot 717ec22664 Merge pull request #874 from janetournois/PMP-isotropic_remeshing_improvements-jtournois
PMP::isotropic_remeshing() - improve management of constraints
2016-03-03 17:00:34 +01:00
Sebastien Loriot 5870f1361a Merge pull request #872 from afabri/PMP-namespace_PMP-GF
The namespace forwarding goes in the user code, not in a CGAL header
2016-03-03 17:00:08 +01:00
Jane Tournois 733e84abbf the input triangles are only composed of the face_range to remesh
this reduces the size of the aabb_tree for projection
and fixes the fact that the face range only should be triangulated, not the
entire polygon mesh
2016-03-03 12:26:14 +01:00
Jane Tournois ce42c3062f halfedge and face descriptors should be hashable 2016-03-03 11:59:55 +01:00
Sébastien Loriot d7e9261d58 hide the filtered projection traits behind the projection traits
the selection of the base class is done using Kernel::Has_filtered_predicates
2016-03-02 21:57:54 +01:00
Sébastien Loriot c3854cb656 fix warnings 2016-03-02 20:10:39 +01:00
Sébastien Loriot fbe36bc8c0 add missing typename 2016-03-02 20:05:05 +01:00
Jane Tournois bf63963830 add constrained vertices to isotropic remeshing
those vertices cannot be modified
2016-03-02 17:08:38 +01:00
Andreas Fabri dd8a68c4c5 The namespace forwarding goes in the user code, not in a CGAL header 2016-03-02 16:52:13 +01:00
Jane Tournois ab6956e188 fix corners in isotropic remeshing
they do not get truncated anymore
2016-03-02 15:52:31 +01:00
Jane Tournois dc0090e9b8 remove duplicate function split_long_edges
by exploiting the edge_is_constrained_map as read-write pmap
this is not documented, and only for demo purposes (at least for now)
2016-03-01 16:28:06 +01:00
Jane Tournois 63884d0033 update the constraints property map after the end of remeshing 2016-03-01 15:30:52 +01:00
Jane Tournois 32bcdb4186 transform EdgeIsConstrainedMap into a member variable 2016-03-01 14:03:28 +01:00
Sébastien Loriot 392c292cc5 handle isolated vertices when computing normal 2016-02-29 10:07:44 +01:00
Andreas Fabri eb90e8e3e1 Include consistently <CGAL/property_map.h> 2016-02-24 12:09:36 +01:00
Sebastien Loriot c1b3b784a7 Merge pull request #777 from janetournois/Polyhedron_demo-polyhedron_item_for_quads-GF
Polyhedron item : improve computation of normals
2016-02-22 08:24:11 +01:00
Andreas Fabri 1918e01c9a fix type requirement of the property map 2016-02-19 11:19:08 +01:00
Andreas Fabri de159f13fc Remve requirement for default constructible FaceNormalMap 2016-02-19 11:11:42 +01:00
Sébastien Loriot 0fc5846f07 change dummy property map to read-only to avoid a warning
I also it is safer to produce a compilation error if used as
a read/write pmap
2016-02-18 17:08:15 +01:00
Sébastien Loriot ceccbb887b fix copy-paste error 2016-02-17 11:51:31 +01:00
Sébastien Loriot d7b5f70181 refine bug-fix: also refine created faces
The refinement is an iterative process, newly created faces must
also be considered as refinable.
2016-02-15 14:57:57 +01:00
Sébastien Loriot 6c4f1274ef refine and fairing functions requires a triangle mesh 2016-02-15 14:35:26 +01:00
Sébastien Loriot 77b69cc881 fixes for polygon_soup_to_polygon_mesh
- add a missing header
  - remove unneed inheritance
  - fix doc to mention internal point pmap requirement
  - Point is not a requirement of the MutableFaceGraph concept
2016-02-15 13:38:52 +01:00
Jane Tournois d3ce97f566 use face normals map as input of compute_vertex_normal
in the named parameters
2016-02-12 15:01:40 +01:00
Jane Tournois e94d675c4f for a triangle, compute normal only once 2016-02-11 19:15:46 +01:00
Jane Tournois 1afce415b6 fix the display of quad meshes with problems
by separating the quads from non-triangular faces
this also prevents from computing a CDT2 for each quad
2016-02-11 18:45:22 +01:00
Sebastien Loriot ca6486f202 Merge pull request #742 from sloriot/PMP-fix_weight
Polygon mesh processing: fix bug in weight
2016-02-07 18:15:29 +01:00
Sebastien Loriot 718eae7a00 Merge pull request #714 from sgiraudot/CGAL-Fix_boost_warning_unused_typedef-GF
Fix boost warning (unused typedef)
2016-02-05 14:59:28 +01:00
Sébastien Loriot 2243f20695 fix bug in weight
if the source of he is v0 then v1==v0
2016-02-05 12:17:08 +01:00
Sebastien Loriot ebf66069c3 Merge pull request #706 from afabri/PMP_include_graph_traits-GF
Deal with deprecated code
2016-02-03 09:44:11 +01:00
Simon Giraudot 751d959c05 Fix boost unused typedef warning: replace BOOST_STATIC_ASSERT by CGAL_static_assertion 2016-02-02 14:32:46 +01:00
Sébastien Loriot aa94453c1e fix submenu name 2016-02-01 16:14:58 +01:00
Andreas Fabri 4c9c668dc9 deal with deprecated code 2016-02-01 15:52:52 +01:00
Sebastien Loriot f6147f5b08 Merge pull request #672 from janetournois/PMP-fix_remeshing_patch_borders-jtournois
PMP isotropic remeshing : fix collapse step with inside borders
2016-01-27 13:37:03 +01:00
Sébastien Loriot 0d60c1626e add missing include directives 2016-01-26 18:42:08 +01:00
Jane Tournois a7c54c024a fix assertion and is_constrained function 2016-01-26 09:27:14 +01:00
Jane Tournois 5d8d1c65b8 if deviation is not getting better, do not make the flip
this tiny change seems to improve a lot the overall quality of the
remeshed polyhedron, by avoiding some pathological cases with
vertices of valence 3 (away from border)
2016-01-25 17:37:03 +01:00
Jane Tournois 856d41e8ca last (default) case should return false i.e. not collapsible 2016-01-25 10:53:43 +01:00
Sébastien Loriot 4c4b191209 Merge pull request #604 from bo0ts/BGL-add_clear-pmoeller
Add BGL helper CGAL::clear
2016-01-23 09:18:56 +01:00