Commit Graph
89 Commits
Author SHA1 Message Date
Sébastien Loriot 9486495f59 Merge remote-tracking branch 'cgal/main' into 'MaelRL/AW2-GF' 2026-03-05 18:29:53 +01:00
Sebastien Loriot 37e69750b4 Breakup and improve PMP's documentation (#9286)
## Summary of Changes

With the years and the additions to the package "Polygon Mesh
Processing" (PMP), the user and reference manuals have grown overly
large, making it difficult to find information.

This PR splits **the documentation** of PMP into four (three new)
packages:
- PMP (core): essential functions, ranging from simple geometric
functions to distance functions, feature detection etc.
- Boolean Operations on Meshes: Corefinement, autorefinement, clipping,
splitting, slicing, [upcoming kernel ?]
- Meshing and Remeshing of Polygon Meshes: combinatorial and geometric,
local and global meshing and remeshing.
- Polygon Mesh Repair: detection and treatment of defects in polygon
meshes

TODO:
- [x] Update usages of now deprecated PMP border.h (moved to BGL)
- [x] Test deprecated border.h
- [x] Fix "Topics" order
- [x] Dispatch functions and doc coming from:
    - [x] #9131
      - [ ] use the new make_hex in add_bbox
- [x] Move .h but keep include/CGAL/PMP

Tentative TODO:
- [ ] Update some package icons?

## Release Management

Integrate after :
- https://github.com/CGAL/cgal/pull/8935
- https://github.com/CGAL/cgal/pull/9131

* Affected package(s): `PMP`
* Issue(s) solved (if any): 
* Feature/Small Feature (if any):
[PMP_doc_breakup](https://cgalwiki.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/PMP_doc_breakup)
* Link to compiled documentation (obligatory for small feature) [*wrong
link name to be changed*](httpssss://wrong_URL_to_be_changed/Manual/Pkg)
* License and copyright ownership: no change
2026-03-03 15:51:59 +01:00
Laurent Rineau 03ac87abaf Merge 'cgal/main' to fix conflicts
Conflicts:
	Mesh_3/include/CGAL/Labeled_mesh_domain_3.h
	Mesh_3/include/CGAL/Mesh_domain_with_polyline_features_3.h
2026-02-25 14:48:01 +01:00
Laurent Rineau 33b3d03acf rewrite test_meshing_polylines_only 2026-02-20 21:01:49 +01:00
Mael Rouxel-Labbé e5898f5ba7 Merge remote-tracking branch 'cgal/main' into PMP-schism 2026-02-17 16:03:31 +01:00
Sebastien Loriot 244d9dee08 STL_Extension: Add bisect_failures debugging utility (#9118)
## Summary

This PR adds a new debugging utility `bisect_failures` to the
STL_Extension package. This function helps identify minimal failing test
cases from complex input data by using a bisection-like approach.

**Small feature: [bisect failures debugging
utility](https://cgalwiki.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/bisect_failures_debugging_utility)**

## Features

- **Multiple failure type support**: Handles CGAL exceptions,
std::exceptions, and exit codes
- **Automatic granularity adjustment**: Starts with ratio=0.5,
automatically halves when no fault is found
- **Debug output**: Saves intermediate states (`current`, `bad`,
`error`, `final_bad`)
- **Template-based design**: Works with any copyable/assignable data
type

## Testing

Added comprehensive test suite (`test_bisect_failures.cpp`) with 14
tests:
-  Edge cases (empty data, no failures)
-  Single element failures (CGAL exception, std::exception, exit code)
-  Pair combinations (all 2-element permutations)
-  Triple combinations (all 3 failure types together)

All tests pass in both Debug and Release configurations.

## Use Case

This utility is particularly useful for:
- Debugging complex geometric algorithms with large input datasets
- Finding minimal reproducible test cases from failing inputs
- Isolating problematic elements in mesh processing, triangulation, etc.

## Example Usage

```cpp
auto get_size = [](const Mesh& m) { return m.number_of_faces(); };
auto simplify = [](Mesh& m, std::size_t start, std::size_t end) -> bool {
  // Remove faces from start to end
  for(std::size_t i = start; i < end && i < m.number_of_faces(); ++i) {
    m.remove_face(start);
  }
  return true;
};
auto run = [](const Mesh& m) -> int { return algorithm(m); };
auto save = [](const Mesh& m, const std::string& prefix) {
  std::ofstream out(prefix + ".off");
  out << m;
};

int result = bisect_failures(mesh, get_size, simplify, run, save);
```

## Files Changed

- `STL_Extension/include/CGAL/bisect_failures.h` (new) - Main utility
header
- `STL_Extension/test/STL_Extension/test_bisect_failures.cpp` (new) -
Test suite
- `STL_Extension/test/STL_Extension/CMakeLists.txt` (modified) - Added
test

## Checklist

- [x] Code compiles without errors (Debug and Release)
- [x] All tests pass
- [x] Comprehensive documentation with Doxygen comments
- [x] Example usage in documentation
- [x] Follows CGAL coding style conventions
- [x] Deal with false positive in the testsuite

## Release Management

* Affected package(s): `STL_Extension`
* Feature/Small Feature (if any): [bisect failures debugging
utility](https://cgalwiki.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/bisect_failures_debugging_utility)
* Link to compiled documentation (obligatory for small feature)
[doc](https://cgal.github.io/9118/v2/STL_Extension/group__PkgSTLExtensionUtilities.html#gad56d708faac9063d3de057394a6d8c52)
* License and copyright ownership: no change
2026-02-12 14:59:15 +01:00
Mael Rouxel-Labbé 8339885f92 Split the rest of PMP (benchmark / examples / include / test) 2026-02-05 10:27:23 +01:00
Mael Rouxel-Labbé 3cdcc71b2a Add an example of interior wrapping 2026-01-27 19:28:18 +01:00
Sven Oesau 3e01c496dd Merge branch 'main' into SD_RG_face_normal_map 2025-12-07 11:30:52 +01:00
Laurent Rineau c89c212a54 bisect_failures: fix documentation 2025-10-31 22:24:41 +01:00
Laurent Rineau e7ab5002a3 add the test non_manifold_face_graph.off 2025-10-17 16:31:14 +02:00
Sven Oesau c7826b20ab Merge branch 'master' into SD_RG_face_normal_map 2025-08-04 16:37:27 +02:00
Sven Oesau dc2ed8c923 added examples to show a difference between Line_segment_region and Plane_face_region versus their linear least squares counterparts 2025-08-04 15:45:36 +02:00
Sébastien Loriot 2504f0ccac add file removed 2025-06-30 09:11:50 +02:00
Jane Tournois 0ab9d3eebf Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3-lrineau
# Conflicts:
#	Installation/CHANGES.md
2025-06-10 11:18:38 +02:00
Jane Tournois 4083e353aa add an example with non-triangulated self-intersecting input 2025-05-12 13:00:32 +02:00
Jane Tournois ca1a5982b6 add an example with self-intersections and autorefinement 2025-05-12 12:12:32 +02:00
Andreas Fabri 851d03dadb merge master 2025-05-07 09:13:11 +01:00
Laurent Rineau 52fff7401a add missing data file 2025-04-25 09:00:01 +02:00
Andreas Fabri 7925d2a08b merge master 2025-04-08 11:49:02 +01:00
Sébastien Loriot b32558b87e Merge remote-tracking branch 'cgal/master' into gsoc2022-isosurface 2024-12-16 11:47:34 +01:00
Andreas Fabri 23af1048ba Add data for 3D example 2024-11-29 12:35:17 +00:00
Andreas Fabri aaae4ad370 Add data for 2D example 2024-11-29 11:25:15 +00:00
Laurent Rineau 02632017a5 Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3-lrineau 2024-11-12 12:33:37 +01:00
Sven Oesau a06002ab2b Merge remote-tracking branch 'cgal/master' into gsoc2022-isosurface 2024-10-14 14:42:46 +02:00
Sébastien Loriot f91765503c demo improvement and various clean-ups 2024-10-01 11:57:04 +02:00
Laurent Rineau 37f3bcfaab Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3-lrineau 2024-09-09 10:57:33 +02:00
Sébastien Loriot a8d7bd1850 move point cloud to the right directory 2024-08-13 13:57:44 +02:00
Laurent Rineau ed4fb14f74 merge master (WIP: need #8273) 2024-07-01 16:38:56 +02:00
Mael Rouxel-Labbé 67aba3fefe Merge remote-tracking branch 'cgal/master' into gsoc2022-isosurface 2024-06-20 10:18:49 +02:00
Sebastien Loriot d06a57a292 Mesh_3 edge_distance criterion : an upper bound for the distances of the feature edge to the input feature (#7532)
## Summary of Changes

Fixes issue #5110.
Adds a edge_distance criteria to the mesh generation process.
This criteria is an upper bound for the distance from the edge to the 1D
feature.

## Release Management

* Affected package(s): Mesh_3
* Issue(s) solved (if any): fix #5110
* Link to small feature page :
[Mesh_3_edge_distance_criteria](https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/Mesh_3_edge_distance_criteria)
* Link to compiled documentation
[*here*](https://cgal.github.io/7532/v1/Manual/index.html):
*
[Mesh_edge_criteria_3](https://cgal.github.io/7532/v1/Mesh_3/classCGAL_1_1Mesh__edge__criteria__3.html)
  * [Mesh_criteria_3](https://cgal.github.io/7532/v1/Mesh_3)
2024-05-27 10:58:15 +02:00
Sebastien Loriot afe7f90a73 Mesh_3::Add handling of *.nii files in one example (#7823)
## Summary of Changes

While the Polyhedron demo can read `*.nii` files there is no example in
`examples/Mesh_3/`.
This PR adds the functionality to the example that uses vtk to read
DICOM data.

This is triggered by [this
question](https://stackoverflow.com/questions/77331075/is-there-an-easy-way-to-convert-from-nifti-nii-image-format-to-inr)
on stackoverflow.

- [ ] Support of `*.nrrd` format
- [ ] example for segmented images
- [ ] Add example data for the file formats.

## Release Management

* Affected package(s): Mesh_3
* License and copyright ownership: unchanged
2024-05-26 17:45:48 +02:00
Andreas Fabri 3833b66474 Add example for mutipolygon 2024-05-15 10:59:51 +01:00
Laurent Rineau b828719c7c Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3-lrineau 2024-04-26 14:40:04 +02:00
Laurent Rineau 0fa27bc857 Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3-lrineau 2024-04-24 16:51:27 +02:00
Efi Fogel 89bfe4ba91 Merge remote-tracking branch 'cgal/master' into gsoc2023-aos_sphere_demo-denizdiktas 2024-04-15 19:11:21 +03:00
ange-clement 3cb583ade7 Added nii image "squircle.nii" +
Updated example to work with a default dataset.
2024-04-12 12:16:25 +02:00
ange-clement 70fd9113e7 Merge branch 'master' of https://github.com/CGAL/cgal into Mesh-3-edge-distance-criterium-aclement 2024-03-28 11:36:39 +01:00
Sébastien Loriot 5254404517 Merge remote-tracking branch 'cgal/master' into HEAD 2024-03-27 22:25:41 +01:00
ange-clement a1e9a08905 added vtk image 2024-03-27 20:06:13 +01:00
Laurent Rineau ed9f712dcd specify that the data set is public domain 2024-03-27 18:37:04 +01:00
Laurent Rineau bffa8f213e Merge pull request #8072 from janetournois/Mesh_3-use_one_step_loop-jtournois
Mesh_3 - fix mesher using the `one_step()` loop

# Conflicts:
#	Mesh_3/include/CGAL/Mesh_3/Triangulation_helpers.h
2024-03-26 10:21:00 +01:00
Jane Tournois 5b004ffbe6 add a test for one_step() loop with features on tiny data 2024-03-14 17:27:47 +01:00
Sébastien Loriot e1df935e88 rename data directory 2024-03-01 14:37:05 +01:00
Efi Fogel e545c67ab0 Added description 2024-03-01 14:49:40 +02:00
Efi Fogel 13b22abd4f Merge branch 'master' into gsoc2023-aos_sphere_demo-denizdiktas 2024-01-08 16:27:52 +02:00
Laurent Rineau e2a745f79f Merge pull request #7892 from sloriot/CGAL-fix_dh_angle_sign
fix dihedral angle computation
2023-12-11 13:56:02 +01:00
Laurent Rineau 4be3a1e589 Merge pull request #7892 from sloriot/CGAL-fix_dh_angle_sign
fix dihedral angle computation
2023-12-11 13:50:38 +01:00
Laurent Rineau df4eed9302 add tests for the dihedral angle 2023-11-29 15:27:57 +01:00
Jane Tournois fbae36fcbe add missing input file 2023-11-24 08:56:13 +01:00