Commit Graph

113978 Commits

Author SHA1 Message Date
Sébastien Loriot f5c550ef44 Merge remote-tracking branch 'cgal/6.0.x-branch' into 'cgal/6.1.x-branch' 2025-12-19 17:34:39 +01:00
Sebastien Loriot fd7fc28166
add and check missing inline keywords for 6.1.x-branch (#9196)
Same as #9195:

- add a CI test that verifies all CGAL headers can be included in two
compilation units and then linked together without error
- add missing inline keywords

but for 6.1.x-branch.
2025-12-19 17:30:01 +01:00
Sebastien Loriot eafd29f81b
add and check missing `inline` keywords (#9195)
## Summary of Changes

- add a CI test that verifies all CGAL headers can be included in two
compilation units and then linked together without error
- add missing `inline` keywords

Before this PR, the check reported:

```
/usr/bin/ld: CMakeFiles/check_headers_linked_twice.dir/__/test_headers2.cpp.o: in function `CGAL::IO::internal::line_starts_with(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)':
test_headers2.cpp:(.text+0xdac): multiple definition of `CGAL::IO::internal::line_starts_with(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)'; CMakeFiles/check_headers_linked_twice.dir/__/test_headers.cpp.o:test_headers.cpp:(.text+0xdac): first defined here
/usr/bin/ld: CMakeFiles/check_headers_linked_twice.dir/__/test_headers2.cpp.o: in function `CGAL::IO::internal::read_tetrahedra(std::istream&, std::vector<std::array<int, 4ul>, std::allocator<std::array<int, 4ul> > >&, int const&, bool)':
test_headers2.cpp:(.text+0xe19): multiple definition of `CGAL::IO::internal::read_tetrahedra(std::istream&, std::vector<std::array<int, 4ul>, std::allocator<std::array<int, 4ul> > >&, int const&, bool)'; CMakeFiles/check_headers_linked_twice.dir/__/test_headers.cpp.o:test_headers.cpp:(.text+0xe19): first defined here
/usr/bin/ld: CMakeFiles/check_headers_linked_twice.dir/__/test_headers2.cpp.o: in function `CGAL::IO::internal::go_to_at_label(std::istream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const*)':
test_headers2.cpp:(.text+0x1092): multiple definition of `CGAL::IO::internal::go_to_at_label(std::istream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const*)'; CMakeFiles/check_headers_linked_twice.dir/__/test_headers.cpp.o:test_headers.cpp:(.text+0x1092): first defined here
/usr/bin/ld: CMakeFiles/check_headers_linked_twice.dir/__/test_headers2.cpp.o: in function `CGAL::IO::internal::is_avizo_tetra_format(std::istream&, char const*)':
test_headers2.cpp:(.text+0x110a): multiple definition of `CGAL::IO::internal::is_avizo_tetra_format(std::istream&, char const*)'; CMakeFiles/check_headers_linked_twice.dir/__/test_headers.cpp.o:test_headers.cpp:(.text+0x110a): first defined here
/usr/bin/ld: CMakeFiles/check_headers_linked_twice.dir/__/test_headers2.cpp.o: in function `CGAL::Surface_mesh_parameterization::get_orbifold_type(int)':
test_headers2.cpp:(.text+0x1329): multiple definition of `CGAL::Surface_mesh_parameterization::get_orbifold_type(int)'; CMakeFiles/check_headers_linked_twice.dir/__/test_headers.cpp.o:test_headers.cpp:(.text+0x1329): first defined here
/usr/bin/ld: CMakeFiles/check_headers_linked_twice.dir/__/test_headers2.cpp.o: in function `CGAL::Tetrahedral_remeshing::cosine_of_90_degrees()':
test_headers2.cpp:(.text+0x135f): multiple definition of `CGAL::Tetrahedral_remeshing::cosine_of_90_degrees()'; CMakeFiles/check_headers_linked_twice.dir/__/test_headers.cpp.o:test_headers.cpp:(.text+0x135f): first defined here
collect2: error: ld returned 1 exit status
```
## Release Management

* Affected package(s): CGAL
* License and copyright ownership: N/A, maintenance by GeometryFactory
2025-12-19 17:29:51 +01:00
Sebastien Loriot d1c337f9ac
Concept-related fixes (#9194)
## Summary of Changes

`AABB_traits` was using `.bbox()`, and `AABB_traits_3.h` uses `.bbox()`,
so not sure why `AABB_traits_2.h` was changed to use `Compute_bbox_2`?

## Release Management

* Affected package(s): `AABB_tree`, `Triangulation_3`
* Issue(s) solved (if any): -
* Feature/Small Feature (if any): - 
* License and copyright ownership: no change
2025-12-19 17:29:33 +01:00
Sebastien Loriot 5f91bc1330
PMP: Tests CMakelists.txt bugfix (#9187)
## Summary of Changes

Tests for triangulate_hole_Polyhedron_3_no_delaunay_test and
triangulate_hole_Polyhedron_3_test were also added in absence of Eigen3
causing the testsuite to abort

## Release Management

* Affected package(s): PMP
2025-12-19 17:29:21 +01:00
Sebastien Loriot ebb45b14c6
Fix losing halfedge markers while simplifying boundaries before snapping (#9173)
## Summary of Changes

When snapping, we can simplify the range ahead of snapping to remove
too-close vertex pairs.

During this operation, we remove some halfedges from the range of
halfedges to be considerd for snapping.

But in fact, we also need to *add* some halfedges because when we
collapse edges, a non-border halfedge can become border and can replace
a halfedge that was to be considered for snapping. If we don't put that
new border halfedge in the range, its target vertex will not be
considered for snapping.

The case is that of opp(prev(opp(h)) being a border halfedge, which was
kinda known because we removed it from the test range, but we forgot to
add it in the range of halfedges considered for snapping.

On the image below, opp(onoh) must be in the range if opoh was in the
range.

<img width="1310" height="736" alt="image"
src="https://github.com/user-attachments/assets/06e13ad1-c97f-49f6-aa74-4740b0c4d015"
/>

We can also just take next(prev_h) because prev_h is a border halfedge
that cannot be removed by the collapse.

<img width="808" height="794" alt="image"
src="https://github.com/user-attachments/assets/0e4d9b14-3669-434d-ba6e-81a7f15cd11b"
/>


## Release Management

* Affected package(s): `Polygon_mesh_processing`
* Issue(s) solved (if any): -
* Feature/Small Feature (if any): -
* License and copyright ownership: no change
2025-12-19 17:27:47 +01:00
Sebastien Loriot 9d82aad77a
Fix tangency of the cut plane with the vertices of the faces (#9142)
Fix case of non triangular faces having vertices tangent to the
clip/refine plane
+ clip volume with coplanar faces



## TODO:
- [x] clean up and rebase
- [x] add test cases
- [x] add comments in the code
2025-12-19 17:27:19 +01:00
Mael 89229ae2de Fix unused variable warning 2025-12-18 17:34:04 +01:00
Mael Rouxel-Labbé 75244517cc Be more robust to possible non-manifold configurations 2025-12-18 17:34:04 +01:00
Mael Rouxel-Labbé 6b514c1901 Better snap debug code 2025-12-18 17:34:04 +01:00
Mael Rouxel-Labbé fb259cbbd3 Better debug file name 2025-12-18 17:34:04 +01:00
Mael Rouxel-Labbé 12d71ca738 Get rid of useless general case
checking with num_halfedges(tm) means this only applies
to something like union of triangular connected components.
And if we change to counting the number of border halfedges,
then we might as well just rely on the O(1) dynamic property map.
2025-12-18 17:34:04 +01:00
Mael Rouxel-Labbé 17c0072f92 Fix comment 2025-12-18 17:34:04 +01:00
Mael Rouxel-Labbé f285490e33 Fix losing in_range markers when opoh is a border edge 2025-12-18 17:34:04 +01:00
Mael Rouxel-Labbé 5badbdc7d7 Make it easier to copy-paste points 2025-12-18 17:34:04 +01:00
Mael Rouxel-Labbé 171b13cfa9 Fix compilation error in debug code 2025-12-18 17:34:03 +01:00
Mael Rouxel-Labbé 511c3f14a5 Add missing space 2025-12-18 17:34:03 +01:00
Laurent Rineau 332cc960e9 add missing `inline` keywords in 6.1.x-branch 2025-12-18 16:19:26 +01:00
Laurent Rineau 88726406be Merge remote-tracking branch 'lrineau/CGAL-fix_missing_inline_keywords-GF' into CGAL-fix_missing_inline_keywords-6.1.x-GF 2025-12-18 16:14:44 +01:00
Laurent Rineau c92344e50c do check the target `check_headers_linked_twice` 2025-12-18 16:12:27 +01:00
Laurent Rineau 28bf0c6802 fix shellcheck warnings/errors 2025-12-18 16:12:12 +01:00
Laurent Rineau 08673bb3b4 Merge remote-tracking branch 'cgal/6.1.x-branch' into CGAL-fix_missing_inline_keywords-6.1.x-GF 2025-12-18 15:44:02 +01:00
Laurent Rineau 933595cf53 add missing inline keywords 2025-12-18 15:01:16 +01:00
Laurent Rineau f001790d4b add a new check: link two compilation units 2025-12-18 15:00:58 +01:00
Mael Rouxel-Labbé 8511225edd Use .bbox() to get the bounding box of a primitive if no pmap is provided
The doc says that .bbox() must exist and Compute_bbox_2 is not part
of the AABBGeomTraits_2 concept.
2025-12-18 11:32:45 +01:00
Mael Rouxel-Labbé 534ad07bd4 Add missing operators 2025-12-18 11:27:51 +01:00
Sven Oesau d704fc056f tests for triangulate_hole_Polyhedron_3_no_delaunay_test and triangulate_hole_Polyhedron_3_test were also added in absence of Eigen3 causing the testsuite to abort 2025-12-15 09:54:26 +01:00
Sébastien Loriot 061bc2dc29 Merge remote-tracking branch 'cgal/6.0.x-branch' into `cgal/6.1.x-branch` 2025-12-12 17:48:59 +01:00
Sebastien Loriot fed810284e
CH3: Make convex_hull_3 deterministic (order of vertices and indices) (#9160)
## Summary of Changes

Adding timestamp to convex_hull_3 vertex

The reason why it makes it deterministic is because during the creation
of the hull some border edges are collected here:
[`find_visible_set(tds, farthest_pt, f_handle, visible_set, border,
traits);`](https://github.com/CGAL/cgal/blob/main/Convex_hull_3/include/CGAL/convex_hull_3.h#L659C6-L659C80)

with `border` being [`typedef std::map<typename TDS_2::Vertex_handle,
typename TDS_2::Edge>
Border_edges;`](https://github.com/CGAL/cgal/blob/main/Convex_hull_3/include/CGAL/convex_hull_3.h#L643).

Then another container `edges` is filled using `border.begin()`
[here](https://github.com/CGAL/cgal/blob/main/Convex_hull_3/include/CGAL/convex_hull_3.h#L678C1-L692C7).

The call to [`Vertex_handle vh = tds.star_hole(edges.begin(),
edges.end(), visible_set.begin(),
visible_set.end());`](https://github.com/CGAL/cgal/blob/main/Convex_hull_3/include/CGAL/convex_hull_3.h#L707)
then induced that the order of faces in the TDS depends on the order of
edges in `edges`. The timestamp makes that the first vertex is always
the same in `border_edges`.

## Release Management

* Affected package(s): Convex_hull_3
2025-12-12 17:48:19 +01:00
Sebastien Loriot bae3d52e1e
Installation: Adapting testing for MSVC 2026 (#9169)
## Summary of Changes

MSVC 2026 solutions have slnx file ending

## Release Management

* Affected package(s): Installation
2025-12-12 13:55:15 +01:00
Sebastien Loriot 346a2dec61
Misc PMP doc fixes (#9172)
## Release Management

* Affected package(s): `Polygon_mesh_processing`
* Issue(s) solved (if any): -
* Feature/Small Feature (if any): -
* License and copyright ownership: no change
2025-12-12 13:54:48 +01:00
Sebastien Loriot 409b5f14e2
Workaround wrong overload pick by at least clang 21.1.6 (#9181)
Fixes [this
error](https://cgal.geometryfactory.com/CGAL/testsuite/CGAL-6.0.3-I-411/Triangulation_3/TestReport_gimeno_ArchLinux-clang-CXX17-Release.gz)
2025-12-12 13:50:58 +01:00
Sébastien Loriot 117dbb7af9 add one more test and fix handling of faces in the cut plane 2025-12-11 14:52:48 +01:00
Sébastien Loriot 66fa84d3ea workaround wrong overload pick by at least clang 21.1.6 2025-12-10 17:57:41 +01:00
Sébastien Loriot c630e83896 restore tests 2025-12-10 17:02:43 +01:00
Sébastien Loriot 12a31929a2 add more tests 2025-12-10 16:41:24 +01:00
Sébastien Loriot fe45084fb4 fix handling of faces inside the clip plane 2025-12-10 16:19:54 +01:00
Sébastien Loriot 20d2ce53fc skip vertices "interior" to a sequence of on the plane vertices 2025-12-10 16:19:12 +01:00
Sven Oesau 960b646074 removing directory from TAG_DIR 2025-12-09 15:57:25 +01:00
Sven Oesau 7fbee84a0e remove timestamp from Convex_hull_face_base_2 2025-12-09 14:42:38 +01:00
Laurent Rineau 72c8cc152a new way to search for TAG_DIR 2025-12-08 15:59:06 +01:00
Mael Rouxel-Labbé f4c3ef092a Misc PMP doc fixes 2025-12-05 22:08:45 +01:00
Sébastien Loriot 4af12e7167 Merge remote-tracking branch 'cgal/6.0.x-branch' into 'cgal/6.1.x-branch' 2025-12-04 18:47:22 +01:00
Sebastien Loriot c9285d3def
Number_types: Document boost::multiprecision number types (#9164)
## Summary of Changes

Add documentation of `boost::multiprecision::cpp_int`  and other types.

## Release Management

* Affected package(s): Number_types
* Issue(s) solved (if any): fix #9163
* Documentation:
[link](https://cgal.github.io/9164/v0/Number_types/group__nt__boost.html)
* License and copyright ownership: unchanged
2025-12-04 18:40:03 +01:00
Sebastien Loriot 56e8e6235b
CH3: Fixing generated indices of coplanar convex_hull_3 (#9161)
## Summary of Changes

Fixed generated indices of coplanar convex_hull_3
Added a small test

## Release Management

* Affected package(s): Convex_hull_3
2025-12-04 18:38:50 +01:00
Sebastien Loriot 0a215ea65c
Add missing license of GPL file (#9166)
## Release Management

* Affected package(s): `Constrained_triangulation_3`
* Issue(s) solved (if any): -
* Feature/Small Feature (if any): -
* License and copyright ownership: no change
2025-12-04 18:37:21 +01:00
Sebastien Loriot 163c35c53e
Workaround API update of Qt6 (#9165)
Should fix errors
[here](https://cgal.geometryfactory.com/CGAL/testsuite/CGAL-6.2-Ic-53/Lab_Demo/TestReport_gimeno_ArchLinux-clang-Release.gz)
2025-12-04 18:36:26 +01:00
Laurent Rineau e9e7cf4913 avoid duplicated lines of code ( sln vs slnx) 2025-12-04 15:57:27 +01:00
Sven Oesau 95a51b186e testing: msvc 2026 solutions have slnx file ending 2025-12-04 15:08:20 +01:00
Sébastien Loriot 39dd7c5028 Merge remote-tracking branch 'cgal/6.0.x-branch' into 'cgal/6.1.x-branch' 2025-12-03 11:54:12 +01:00