Commit Graph

5540 Commits

Author SHA1 Message Date
Sebastien Loriot 06fa730c75
Flip it if you can't collapse it (#8609)
if a needle is also a cap, it will be handled as a needle only. But if
we can't collapse the edge, a flip will not be tried. Try the flip too.

Note that this will slow down the method as the status of a triangle is
tested twice.

Fix #8605
2024-12-23 09:34:33 +01:00
Sebastien Loriot b55bdc0103
Fix link to replacement function (#8657)
## Release Management

* Affected package(s): `Polygon_mesh_processing`
* Issue(s) solved (if any): -
* Feature/Small Feature (if any): -
* License and copyright ownership: no change
2024-12-23 09:33:22 +01:00
Sébastien Loriot 8bc0b888b8 clean up patch and make filling lazy 2024-12-18 11:42:10 +01:00
Sébastien Loriot dfb77dde96 add test 2024-12-18 11:42:05 +01:00
Sébastien Loriot a6f7b3c163 WIP handle nested coplanar CC 2024-12-18 11:37:14 +01:00
Mael Rouxel-Labbé 4efaa1e9cb Fix link to replacement function 2024-12-13 11:57:30 +01:00
Sebastien Loriot 289a8bda49
`PMP::isotropic_remeshing()` - fix relaxation of constrained vertices (#8604)
## Summary of Changes

Constrained vertices, and constrained edges were not properly protected
during the smoothing step.

## Release Management

* Affected package(s): PMP
* Issue(s) solved (if any): fix #8388
* License and copyright ownership: unchanged
2024-12-10 16:30:25 +01:00
Sébastien Loriot 0737a8f99b do not put all the faces of the mesh in the hash map 2024-12-10 15:58:53 +01:00
Sébastien Loriot c3e4e32fb7 factorize cap checks 2024-12-10 15:37:53 +01:00
Sébastien Loriot 116c0ec5d9 only use one container for the next loop
--> make the output of the function idempotent
2024-12-10 15:18:24 +01:00
Mael Rouxel-Labbé e9de7e88ad Fix test pretty much never testing envelope tests + read all formats 2024-12-07 23:34:58 +01:00
Mael Rouxel-Labbé eb668da9ea Misc cleaning 2024-12-07 23:34:23 +01:00
Mael Rouxel-Labbé fda7b1ae6a Avoid a lot of useless shape predicate calls
Here are some changes:
- Avoid a lot of redundant calls of is_it_a_needle / is_it_a_cap
  - Do not test for cap-ness if it's already a needle
  - Do not fill both ranges at the beginning, but fill
    with everything: on the first round, needle-ness will
    be tested, and the exit towards cap-ness will happen
  - Wait for a needle to no longer be a needle, or not be
    treatable to actually test cap-ness
- When the mesh is modified, do not test everything immediately,
  just put them in the queue of the next iteration

Result: Fewer calls to shape predicates

- master -
needle calls = 828 668
cap calls = 803 330

- PR -
needle calls = 803 554
cap calls = 795 317

Should be fewer but two effects are balacing each other for the calls:
- much fewer calls to shape predicates (is_it_a_needle, is_it_a_cap)
  by not calling until absolutely necessary (but still checking at pop time).
- when we modify the mesh, I no longer fill the CURRENT cap and needle
  ranges, but the next ones. The point is to really prioritize all caps
  BEFORE treating needles, whereas otherwise we would treat some needles
  at the current iteration while there are still caps to treat.
So there are more iterations which add more useless calls (see below)
2024-12-07 23:31:57 +01:00
Mael Rouxel-Labbé a4cb48a145 Fix never trying again a user-rejected cap 2024-12-07 23:29:04 +01:00
Mael Rouxel-Labbé eb5ff9b33e Fix collect_badly_shaped_triangles not actually filling both ranges 2024-12-07 23:28:20 +01:00
Sébastien Loriot cac285d097 no need to redo new node propagation if it was already been done once 2024-12-06 17:19:01 +01:00
Sébastien Loriot 0b3c27e584 swap the parameters also here 2024-11-21 09:04:17 +01:00
Sébastien Loriot 41d37ac2a9 split badly shaped triangle check and delay the check calls 2024-11-20 09:40:13 +01:00
Sébastien Loriot b60b203c56 add missing cap collection in case of non-collapsed edge 2024-11-20 09:11:48 +01:00
Jane Tournois 21e1ff113a vertex is constrained if NOT allowed to move 2024-11-18 16:17:19 +01:00
Sébastien Loriot c9c1770c18 in case an edge is both a cap and a needle but that is not collapsable try to flip 2024-11-14 11:54:48 +01:00
Jane Tournois 7462b70bec remove unused 2024-11-12 14:01:30 +01:00
Jane Tournois b8165f62de add is_move_allowed(v) and use it in tangential_relaxation_impl() 2024-11-08 16:57:42 +01:00
Jane Tournois ec1d43afbe add constrained vertices to pmap 2024-11-08 16:11:11 +01:00
Laurent Rineau 212a323e4d Merge pull request #8276 from sloriot/PMP-split_visitor_fwd
Forward the visitor for split
2024-06-13 12:48:22 +02:00
Laurent Rineau 96d91fa2bd Merge pull request #8277 from afabri/PMP-normals-GF
PMP: Change the string of the property
2024-06-13 12:48:20 +02:00
Andreas Fabri 8a6b86b9ae PMP: Change the string of the property 2024-06-11 08:18:34 +01:00
Sébastien Loriot 4cd04080b3 forward the visitor 2024-06-11 09:08:33 +02:00
Sébastien Loriot 6291a4f62d also rename input nps 2024-05-06 09:50:18 +02:00
Sébastien Loriot 1be3e1d3f2 shorten parameters for better doc readibility 2024-05-02 14:36:18 +02:00
Laurent Rineau 9f96166d44 Merge branch '5.5.x-branch' into 5.6.x-branch
# Conflicts:
#	Polygon/include/CGAL/Polygon_2_algorithms.h
#	Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/measure.h
2024-03-22 09:09:57 +01:00
Sébastien Loriot f34745c4d8 use a functor for collapsing the DAG to not depend on Filtered_kernel
nor inclusion order
2024-03-14 10:02:30 +01:00
Sébastien Loriot 916282e164 fix invalid path 2024-02-14 14:22:47 +01:00
Sébastien Loriot ee1fa58406 Merge remote-tracking branch 'cgal/5.5.x-branch' 2023-12-18 13:31:06 +01:00
Sebastien Loriot f798df19a5
document the thread-safety requirement of output iterators (#7924) 2023-12-18 13:25:56 +01:00
Sébastien Loriot 93ba75b8a1 add missing not 2023-12-14 08:47:54 +01:00
Laurent Rineau d380a34297 Merge pull request #7914 from sloriot/PMP-remesh_planar_faces_missing_remove_const
PMP remesh_planar_patches: handle const meshes
2023-12-11 13:48:10 +01:00
Laurent Rineau 7cfba8f54c Merge pull request #7917 from afabri/PMP-concurrentIO-GF
PMP: Write into different files to avoid concurrent writing
2023-12-11 13:48:04 +01:00
Sébastien Loriot f36bdda9fe doc thread-safety of output iterators 2023-12-11 13:42:54 +01:00
Andreas Fabri f0426b8aa6 PMP: Write into different files to avoid concurrent writing 2023-12-07 09:33:31 +00:00
Sébastien Loriot 63556d4faa use explicitly const meshes 2023-12-06 15:50:14 +01:00
Sébastien Loriot 560f02c921 add missing remove_const 2023-12-06 15:29:17 +01:00
Sébastien Loriot 15a8dbf7d9 Merge remote-tracking branch 'cgal/5.5.x-branch' 2023-10-25 17:42:37 +02:00
Sébastien Loriot f2ec9175ac prevent the removal boundary edges (that are constraints) 2023-10-23 14:41:46 +02:00
Laurent Rineau e79e0d2033 Merge pull request #7710 from sloriot/PMP-coref_visitor_concept
Fix concept doc
2023-09-13 16:05:35 +02:00
Sébastien Loriot 4f29b83610 really fix the order 2023-09-11 15:14:51 +02:00
Sébastien Loriot 2905e38117 update parameter orders 2023-09-11 11:28:22 +02:00
Sébastien Loriot eebc635da0 fix concept doc 2023-09-11 09:38:27 +02:00
Laurent Rineau 22d88e367a Merge pull request #7651 from sloriot/PMP-snap_fix_collapse_test
Fix collapse test in snap
2023-09-06 11:52:52 +02:00
Sébastien Loriot 77145855da allow external tag function in remeshing with common interface 2023-08-28 08:29:08 +02:00