Commit Graph

3125 Commits

Author SHA1 Message Date
Sébastien Loriot 08d9ce3c8a Merge pull request #6038 from MaelRL/PM-Fix_pmaps_reference_types-GF
Various fixes for property maps (5.2)
2021-10-29 17:30:47 +02:00
Laurent Rineau d9a6062f87 Merge pull request #6051 from MaelRL/PMP-Forward_GT_orient_to_bound_volume-GF
PMP: Forward the geometric traits in `orient_to_bound_a_volume()`
2021-10-29 16:48:23 +02:00
Sébastien Loriot b793e7cd90 fix NPs and improve doc 2021-10-19 17:38:12 +02:00
Mael Rouxel-Labbé 1ab6b44d7d Fix NP forwarding in volume_CC 2021-10-15 10:22:08 +02:00
Mael Rouxel-Labbé 1f73af6cc4 Drive-by cleaning 2021-10-14 11:09:04 +02:00
Mael Rouxel-Labbé 91e7f1d20c Forward the geom traits in orient_to_bound_a_volume 2021-10-14 11:06:04 +02:00
Mael Rouxel-Labbé 590ddf8015 Various fixes for pmaps:
- Use `value_type` when the returned type is not a reference
- Enforce `reference = value_type` if the returned type is not
  a reference (to avoid `typename PM::reference r = get(m, k)`,
  which will take a ref to a temporary if the `reference`
  typedef is an actualy reference)
- Do not use `put_get_helper` if the property map is not a `lvalue`
  **mutable** property map: the `put()` is `map[k] = v`, which
  is broken if `operator[]` does not return a reference
- The concept `boost::lvalue_property_map_tag` requires `operator[](key)`,
  not a reference in `get(map, key)`. You can have a readable property map
  returning a reference through its `get(map, key)`, but if there is
  no `operator[]`, it's just a `boost::readable_property_map_tag`
- Some const correctness to avoid copying maps with state
  or heavy keys in `get(map, key)` / `put(map, key, value)`
- Base the category of a wrapping pmap on what it offers instead
  of just forwarding the base property map's category
- Tried to do something like mutable lvalue pmap:
  * `value_type& operator[](key&)`
  * `ref get(map, const key&)`
  * `put(map, const key&, const value_type&)`
  and non-mutable lvalue pmap:
  * `const value_type& operator[](const key&)`
  * `ref get(map, const key&)`
  but not everything fits properly...
2021-10-08 15:38:47 +02:00
Mael Rouxel-Labbé df560987a6 Whitespace & cleaning changes 2021-10-08 12:13:43 +02:00
Mael Rouxel-Labbé 863ab7541c Various whitespace fixes 2021-10-05 12:14:03 +02:00
Mael Rouxel-Labbé 84d84278b9 Fix VPM type 2021-10-05 12:14:02 +02:00
Mael 4e5fbb6f22
Specify namespace
Co-authored-by: Laurent Rineau <Laurent.Rineau@cgal.org>
2021-09-27 12:15:09 +02:00
Mael Rouxel-Labbé 878d94e299 Fix sign call 2021-09-24 09:47:33 +02:00
Mael Rouxel-Labbé 2bc5643972 Fix comparison 2021-09-21 16:50:19 +02:00
Mael Rouxel-Labbé c7519ef93c Cache the squared cos value 2021-09-15 14:59:55 +02:00
Mael Rouxel-Labbé a5bbd05c42 Do not compute square roots + various improvements 2021-09-15 14:46:56 +02:00
Mael Rouxel-Labbé 8b7ab25966 Minor cleaning 2021-09-15 14:08:25 +02:00
Sébastien Loriot 000b03b595 follow up of #5889
cherry-picking for autorefinement
2021-09-06 18:44:07 +02:00
Sebastien Loriot 2f0a643a84
Merge pull request #5889 from sloriot/PMP-cherry_picks_from_5089
Bug fixes cherry picked from #5049
2021-08-30 15:51:23 +02:00
Sébastien Loriot 050e81d5fd set coplanar status of patches before classification
cherry-picked from #5049
2021-08-04 14:58:16 +02:00
Sébastien Loriot 8903e746f0 Correctly split intersection polylines when boundary/interior status changes along the polyline
Cherry-picked from #5049
2021-08-04 14:58:16 +02:00
Sébastien Loriot 6349441c4b better handling of boundary cases (cherry-picked from #5049) 2021-08-04 14:57:51 +02:00
Simon Lopez 7f6c39e898 Skip shared edges which are border edges 2021-07-29 10:52:13 +02:00
Laurent Rineau 49aff67985 Merge pull request #5689 from janetournois/PMP-isotropic_remeshing_fixes-jtournois
PMP::isotropic_remeshing - fixes about "isolated constraints"

# Conflicts:
#	Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt
2021-05-18 17:31:55 +02:00
Jane Tournois 74e2ee9734 do not collapse isolated constraints 2021-05-06 19:40:52 +02:00
Jane Tournois 3a6e31de65 do not split isolated constraints 2021-05-06 15:56:23 +01:00
Jane Tournois 64e568f748 an isolated constraint can be on the mesh border
the halfedge status for a pair of opposite halfedges can be
MESH_BORDER and ISOLATED_CONSTRAINT, but MESH_BORDER has
priority
2021-05-06 16:56:05 +02:00
Jane Tournois 49fc218c45 avoid iterating over all halfedges, but only the ones of the patch to be remeshed 2021-05-06 15:55:19 +01:00
Jane Tournois 9d3d29fd6d encapsulate debug code in debug macro 2021-05-06 16:55:02 +02:00
Laurent Rineau 795c931b55 Merge pull request #5637 from sloriot/PMP-hole_filling_empty_range_warning
Fix use of empty range
2021-04-28 15:22:41 +02:00
Sébastien Loriot 0eea836f1e handle empty point range 2021-04-23 08:46:28 +02:00
Sébastien Loriot eef92fbef7 Merge remote-tracking branch 'cgal/5.1.x-branch' 2021-04-21 15:47:06 +02:00
Sebastien Loriot e9c97d2b59
Merge pull request #5539 from sloriot/PMP-coref_check_si
Collect faces incident to edges too
2021-04-17 11:04:38 +02:00
Jane Tournois d61cf58f2f add ISOLATED_CONSTRAINT halfedge status
this type is needed for edges that are part of the input constrained
edges property map, and are incident to a face to be remeshed only by a
vertex.
These edges contribute to creating corner vertices (incident to >= 3
constrained edges), but should still not be considered as patch borders

without dealing with these "isolated constraints", the corner vertices that
are incident to 2 patch borders and 1 of these edges was not considered
as a corner but as a simple patch border vertex, hence it could be
moved/deleted by a collapse or relaxation steps
2021-04-13 15:20:21 +02:00
Laurent Rineau a11a7578f6 Merge pull request #5570 from MaelRL/PMP-Repair_PS_invalid_polygons_speed_up-GF
Speed up invalid polygon removal in repair_PS
2021-04-06 15:11:41 +02:00
Mael Rouxel-Labbé dc854d8088 Use std::remove_if to speed-up invalid polygon removal 2021-03-31 11:54:38 +02:00
Sébastien Loriot f5a6ff424e collect face incident to edges too 2021-03-19 14:47:54 +01:00
Laurent Rineau 4dc8a341f9 Merge pull request #5423 from afabri/PMP-corefine_OM-GF
PMP:: Use operator<  instead of operator> as OM only implements the former
2021-03-10 10:33:17 +01:00
Laurent Rineau 325436540f Merge pull request #5429 from sloriot/PMP-coref_face_patch_init
Corefine: always init faces of patches
2021-03-03 17:10:16 +01:00
Laurent Rineau 3c3dad3243 Merge pull request #5435 from afabri/Intersect_3-fix_isocuboid_plane-GF
Intersect_3: Fix Iso_cuboid_3/Plane_3 and Tetrahedon_/Plane_3 intersection
2021-03-03 16:56:31 +01:00
Laurent Rineau b5e6ef261f Merge pull request #5442 from MaelRL/PMP-stitch_borders_reintroduce_zipping-GF
Re-introduce some kind of zipping as a first step to boundary cycle stitching
2021-03-03 16:39:54 +01:00
Laurent Rineau e522630610 Merge pull request #5476 from sloriot/PMP-needle_caps_ecm_bug
PMP: Remove needles&caps fixes
2021-03-03 16:34:46 +01:00
Laurent Rineau 7e61495ef5 Merge pull request #5429 from sloriot/PMP-coref_face_patch_init
Corefine: always init faces of patches
2021-03-03 16:31:17 +01:00
Laurent Rineau 2800c8c587 Merge pull request #5435 from afabri/Intersect_3-fix_isocuboid_plane-GF
Intersect_3: Fix Iso_cuboid_3/Plane_3 and Tetrahedon_/Plane_3 intersection
2021-03-03 16:31:15 +01:00
Sébastien Loriot fa47c35271 remove unused variable 2021-03-03 08:28:28 +01:00
Sébastien Loriot c1dcaac020 remove TODOs 2021-03-02 16:21:06 +01:00
Sébastien Loriot 313f682b8c use custom functor for bbox and split primitives
aabb tree build runtime is similar to using EPICK
2021-03-02 16:16:07 +01:00
Sébastien Loriot 20865d2544 robustify side_of test 2021-02-26 15:46:01 +01:00
Mael Rouxel-Labbé abe1f6e577 Misc cleaning 2021-02-22 16:51:35 +01:00
Mael Rouxel-Labbé b3d7977fac Fix boundary cycle zipping not updating its representative 2021-02-22 16:50:52 +01:00
Sébastien Loriot 85a9962892 2 fixes:
- an edge cannot be collapsed if both its endpoints are constrained -> allow cap classification
- an edge with two constrained endpoints can be flipped (if not constrained)
2021-02-22 14:50:41 +01:00