Commit Graph

5152 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 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
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
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 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
Mael Rouxel-Labbé f4c3ef092a Misc PMP doc fixes 2025-12-05 22:08:45 +01:00
Sebastien Loriot 85ef57ffa1
CDT_3 bug-fix: throw exceptions instead of raw crashs (like segfaults) (#9089)
## Summary of Changes

Bug-fix for `CGAL::Conforming_constrained_Delaunay_triangulation_3` in
CGAL-6.1.

## Release Management

* Affected package(s): Constrained_triangulation_3
* License and copyright ownership: GeometryFactory
2025-11-21 17:40:00 +01:00
Sébastien Loriot 69d17c28bb add comments 2025-11-21 11:24:12 +01:00
Sébastien Loriot 342fc2b18f one more tangency fix 2025-11-21 11:16:23 +01:00
Sebastien Loriot 3ebe9203a7
Fix PMP on i386/i686 (32 bits, with the x87 FPU) (#8911)
## Summary of Changes

Fix PMP on i386/i686 (32 bits, with the x87 FPU).

## Release Management

* Affected package(s): PMP, Number_types
2025-11-20 10:28:31 +01:00
Sébastien Loriot 8c39b972e0 Fix tangency of the cut plane with the vertices of the faces 2025-11-19 14:16:55 +01:00
Sébastien Loriot 3bfc5f32f5 Merge remote-tracking branch 'cgal/6.0.x-branch' into 'cgal/6.1.x-branch' 2025-10-17 11:44:39 +02:00
Sébastien Loriot 42068f6009 handle case of identical projected points 2025-10-15 11:03:16 +02:00
Laurent Rineau d309bc89ce fix typo "and and" 2025-09-30 17:11:15 +02:00
Laurent Rineau 88f9f00922 fix warning -Wstringop-overflow
Fix that warning, due to a copy of `tuple<Point, int, int>` in compare operators for `std::sort` and `std::unique`, in `CGAL::Polygon_mesh_processing::autorefine_impl::collect_intersections`.

```
In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order) [with _ITp = int]’,
    inlined from ‘void CGAL::Handle::incref() const’ at /mnt/testsuite/include/CGAL/Handle.h:87:29,
    inlined from ‘CGAL::Handle::Handle(const CGAL::Handle&)’ at /mnt/testsuite/include/CGAL/Handle.h:55:13,
    inlined from ‘CGAL::Lazy<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> > >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<__gmp_expr<__mpq_struct [1], __mpq_struct [1]>, CGAL::Interval_nt<false> > > >::Lazy(const CGAL::Lazy<CGAL::Point_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::Point_3<CGAL::Simple_cartesian<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> > >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<__gmp_expr<__mpq_struct [1], __mpq_struct [1]>, CGAL::Interval_nt<false> > > >&)’ at /mnt/testsuite/include/CGAL/Lazy.h:877:7,
    inlined from ‘CGAL::Point_3<CGAL::Epeck>::Point_3(const CGAL::Point_3<CGAL::Epeck>&)’ at /mnt/testsuite/include/CGAL/Point_3.h:30:7,
    inlined from ‘std::_Head_base<_Idx, _Head, false>::_Head_base(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 0; _Head = CGAL::Point_3<CGAL::Epeck>]’ at /usr/include/c++/15/tuple:208:17,
    inlined from ‘std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(const std::_Tuple_impl<_Idx, _Head, _Tail ...>&) [with long unsigned int _Idx = 0; _Head = CGAL::Point_3<CGAL::Epeck>; _Tail = {int, int}]’ at /usr/include/c++/15/tuple:318:17,
    inlined from ‘std::tuple< <template-parameter-1-1> >::tuple(const std::tuple< <template-parameter-1-1> >&) [with _Elements = {CGAL::Point_3<CGAL::Epeck>, int, int}]’ at /usr/include/c++/15/tuple:1502:17,
    inlined from ‘bool __gnu_cxx::__ops::_Val_comp_iter<_Compare>::operator()(_Value&, _Iterator) [with _Value = std::tuple<CGAL::Point_3<CGAL::Epeck>, int, int>; _Iterator = __gnu_cxx::__normal_iterator<std::tuple<CGAL::Point_3<CGAL::Epeck>, int, int>*, std::vector<std::tuple<CGAL::Point_3<CGAL::Epeck>, int, int> > >; _Compare = CGAL::Polygon_mesh_processing::autorefine_impl::collect_intersections<CGAL::Epeck>(const std::array<CGAL::Point_3<CGAL::Epeck>, 3>&, const std::array<CGAL::Point_3<CGAL::Epeck>, 3>&, std::vector<std::tuple<CGAL::Point_3<CGAL::Epeck>, int, int> >&)::<lambda(auto:82, auto:83)>]’ at /usr/include/c++/15/bits/predefined_ops.h:240:23,
    inlined from ‘void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<tuple<CGAL::Point_3<CGAL::Epeck>, int, int>*, vector<tuple<CGAL::Point_3<CGAL::Epeck>, int, int> > >; _Compare = __gnu_cxx::__ops::_Val_comp_iter<CGAL::Polygon_mesh_processing::autorefine_impl::collect_intersections<CGAL::Epeck>(const std::array<CGAL::Point_3<CGAL::Epeck>, 3>&, const std::array<CGAL::Point_3<CGAL::Epeck>, 3>&, std::vector<std::tuple<CGAL::Point_3<CGAL::Epeck>, int, int> >&)::<lambda(auto:82, auto:83)> >]’ at /usr/include/c++/15/bits/stl_algo.h:1758:20:
/usr/include/c++/15/bits/atomic_base.h:631:34: warning: ‘unsigned int __atomic_fetch_add_4(volatile void*, unsigned int, int)’ writing 4 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=]
  631 |       { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
      |                ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
```

See for example https://cgal.geometryfactory.com/CGAL/testsuite/CGAL-6.2-Ic-6/Constrained_triangulation_3_Examples/TestReport_cgaltest_Fedora-rawhide-Release.gz
2025-09-25 16:25:37 +02:00
Sébastien Loriot 12f6041f5a Merge remote-tracking branch 'cgal/6.0.x-branch' into `cgal/master` 2025-09-03 16:56:24 +02:00
Sébastien Loriot 8c25c60052 Merge remote-tracking branch 'cgal/5.6.x-branch' into 'cgal/6.0.x-branch' 2025-09-03 16:55:14 +02:00
lvalque 37f9018997 Initialized the lower bound face in traversal of the AABB-tree to solve issue-7164 2025-09-03 16:41:15 +02:00
Sébastien Loriot ca869de993 more macro protections for MSVC 2025-09-02 14:17:59 +02:00
Sébastien Loriot 478dab85c1 macro protection 2025-08-29 09:55:15 +02:00
Sébastien Loriot a027377f09 fix the handling of non-simply connected faces in the output
for now we always triangulate such faces
2025-08-27 17:19:23 +02:00
Sébastien Loriot b2ba32307c Merge remote-tracking branch 'cgal/6.0.x-branch' into 'cgal/6.1.x-branch' 2025-08-13 18:07:09 +02:00
Sébastien Loriot 419057ece4 Merge remote-tracking branch 'cgal/5.6.x-branch' into 'cgal/6.0.x-branch' 2025-08-13 18:05:54 +02:00
Sébastien Loriot fdd7c17ec1 avoid large dag in centroid 2025-08-07 18:20:20 +02:00
Sébastien Loriot c259a7f429 actually from the doc the constness issue is in the default visitor... 2025-08-04 15:40:45 +02:00
Sébastien Loriot f0752ec894 fix constness issue 2025-08-04 15:24:50 +02:00
Sebastien Loriot 6a733bbf47
Allow Side_of_triangle to take ownership on an external AABB-tree (#9007)
Convenient for using only a subset of faces for example, or to force the
building of the tree
2025-08-04 08:40:04 +02:00
Sébastien Loriot 8e0f2d6f73 Merge remote-tracking branch 'cgal/6.0.x-branch' into 'cgal/master' 2025-07-31 15:19:07 +02:00
Sébastien Loriot 28eee36cb6 Merge remote-tracking branch 'cgal/5.6.x-branch' into 'cgal/6.0.x-branch' 2025-07-31 15:15:52 +02:00
Sébastien Loriot 9dcbc58ec9 add a constructor taking a lvalue of an AABB-tree
we can construct the tree for a subset of faces and still give the ownership to the class
2025-07-31 11:12:38 +02:00
Sébastien Loriot d182dabf94 cannot collapse only if one of the two vertex is not constrained
+ fill maps only if required
2025-07-28 15:41:20 +02:00
albert-github 12cde5b685 Spelling correction
After review: euclidean -> Euclidean
2025-06-27 13:04:28 +02:00
albert-github 7a512655f1 Spelling correction
Spelling correction
2025-06-27 10:56:21 +02:00
Sébastien Loriot 27a7cef2fb Merge pull request #8744 from LeoValque/PMP_triangle_soup_rounding-GF
Add do_snap parameter to PMP::autorefine_triangle_soup
2025-06-26 22:01:58 +02:00
Sébastien Loriot 78cfeacf01 Merge pull request #8186 from lrineau/Triangulation_3-CDT_3-lrineau
New package: CGAL 3D conforming constrained Delaunay triangulations
2025-06-26 21:57:17 +02:00
Sebastien Loriot d961dd767a
Add extra condition (#8930)
avoid the user to be surprised that the topology cannot be restored if
not all CC are sampled
2025-06-26 21:48:01 +02:00
Jane Tournois 58e52e7dad avoid risk of dangling reference, using RVO
fix a warning on Debian
2025-06-24 15:08:36 +02:00
albert-github 7385518583 Warnings during table generation in documentation
With doxygen release1.14.0 doxygen is a bit stricter regarding handling tables (not ignoring superfluous tags), it now leads to some warnings (and unexpected results).
2025-06-23 14:54:04 +02:00
Sébastien Loriot 6905ab2b21 backticks 2025-06-23 12:01:05 +02:00
Sébastien Loriot dc31a8ce3a add precondition about single CC mesh 2025-06-23 11:36:13 +02:00