Commit Graph

1670 Commits

Author SHA1 Message Date
Sébastien Loriot 003bf47781 move alpha computation into a functor 2023-06-08 14:05:09 +02:00
Sebastien Loriot b1b02d64fe
P3M3: Non-cubic domains, fixes, improvements (#7062)
## Summary of Changes

- Add a dummy point generator that is agnostic to the periodic domain's
geometry, allowing P3M3 to handle non-cubic domain.
- Add an example of P3M3 running on polyhedral domains.
- Fix a few issues in SMDS_3's tet soup reading relating to
non-manifoldness + general IO code speed improvements.
- Fix a few issues in P3M3's medit output and always duplicate facets to
reduce the quantity of non-manifoldness occurences.
- Fix an issue with including Mesh_3 headers before P3M3's.
- Fix periodic point projection (for Mesh_3 optimizers) badly computing
the projection direction
- Robustify a handful of P3M3 functions that were using intermediate
constructions rather than the <Point, Offset> API (which uses filtered
predicates and thus yields proper robustness)
- Misc minor code cleaning / modernization

ToDo:
- [x] Check if some medit IO issues are fixed
- [x] Add non-manifoldness flag to read_MEDIT
- [x] Fix value of orthosphere_radius_threshold
- [x] Check calls of insert_dummy_points() (use generic)
- [x] Check doc of P3M3 about cubic domains requirement

Not done:
- [ ] Fix sharp features for periodic polyhedral domains (problems due
to changing weights creating cover change...). Code:
https://gist.github.com/MaelRL/357c52dc04e16a162f13a3c6860a1398; WIP
diff: https://gist.github.com/MaelRL/f98809964acffbacb6d3f42793e2654e

## Release Management

* Affected package(s): `Mesh_3`,  `P3M3`, `P3T3`, `SMDS3`
* Issue(s) solved (if any): Fix #6997, Fix #7214
* Feature/Small Feature (if any): TODO
* License and copyright ownership: no change
2023-05-30 19:13:45 +02:00
Sebastien Loriot 11b92e94f8
Add an alternative of Mpzf using boost cpp_int (#7191)
## TODO:
- [x] branch size
- [x] boost backend should not be the default in 5.6
2023-05-22 09:23:35 +02:00
Sébastien Loriot 39e6369d39 add missing FT and typename 2023-05-12 10:32:54 +02:00
Andreas Fabri 9924814e77 Fix construction of Iso_rectangle/cuboid from Bbox 2023-05-12 08:07:08 +01:00
Sébastien Loriot 4e8259e309 use Exact_integer/Exact_rational 2023-05-11 16:59:46 +02:00
Mael 532b82cb9b
Merge branch 'master' into P3M3-Undocumented_polyhedral_domain_example-GF 2023-05-04 17:28:47 +02:00
Laurent Rineau d2bc415a15 Merge pull request #6950 from lrineau/CGAL-allow_Epick_with_float-GF
Simple_precision_epick: an Epick-like kernel with float as FT
2023-05-04 16:37:17 +02:00
Sébastien Loriot c1ceeaed55 try be less aggressive 2023-05-03 18:21:29 +02:00
Sébastien Loriot f530f69752 try to suppress warnings 2023-05-02 15:23:17 +02:00
Michael Hoffmann 721aafd22e remove trailing whitespace 2023-04-27 17:49:50 +02:00
Michael Hoffmann 4ad2561b39 remove trailing whitespace 2023-04-27 16:52:25 +02:00
Michael Hoffmann 003ce240b6 Added EPIC exact tag for the (two relevant) global functions. 2023-04-27 15:34:53 +02:00
Michael Hoffmann cfa16aa95f Document which constructions are exact in EPIC. 2023-04-27 12:14:36 +02:00
Michael Hoffmann 24451c03e1 Add doc which constructions are trivial/exact. 2023-04-25 17:01:09 +02:00
Laurent Rineau 42297b06a4 fix runtime error with single precision (float), cont. 2023-04-24 14:49:42 +02:00
Sébastien Loriot b039040f73 boost::is_convertible -> std::is_convertible 2023-04-23 22:37:07 +02:00
Sébastien Loriot 8b3acae1c7 boost::remove_reference -> std::remove_reference 2023-04-23 22:36:59 +02:00
Sébastien Loriot fa301554ce boost::remove_v -> std::remove_cv_t 2023-04-23 19:13:56 +02:00
Laurent Rineau af5468c3a8 fix runtime error with single precision (float) 2023-04-20 21:15:19 +02:00
Laurent Rineau 594682dde3 Merge pull request #5461 from sloriot/PMP-decimation
Add coplanar decimation
2023-04-17 10:14:07 +02:00
Laurent Rineau 824976a003 Merge pull request #7236 from albert-github/feature/issue_7231
issue #7231 Improvement of layout of refines relations.
2023-04-17 10:14:01 +02:00
albert-github b21b984daa issue #7231 Improvement of layout of refines relations.
Adjusted after review
- usage of `Adaptable...Function` instead of `AdapatableFunctor (with... arguments)`
- corrected some incorrect / superfluous `}`
2023-04-12 09:49:53 +02:00
albert-github 8a0b21461d Unexpected backtick
- Corrected some more redundant / missing backticks
- correctes a spelling error (Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Boolean_set_operations_2/Gps_default_dcel.h)
2023-04-11 17:38:37 +02:00
Laurent Rineau 1dce90ee79 Merge remote-tracking branch 'cgal/master' into CGAL-allow_Epick_with_float-GF 2023-04-07 10:59:51 +02:00
Sebastien Loriot a34ada1cfe Apply suggestions from code review
Co-authored-by: Mael <mael.rouxel.labbe@geometryfactory.com>
2023-03-31 14:39:33 +02:00
Mael Rouxel-Labbé cd0c81a98a Merge remote-tracking branch 'cgal/master' into P3M3-Undocumented_polyhedral_domain_example-GF 2023-03-20 10:14:27 +01:00
albert-github 2d60f46985 issue #7231 Improvement of layout of refines relations.
- Adjusted cgalRefines according to reviews
- Implemented it in all files
2023-03-14 17:37:50 +01:00
albert-github 19c97b031e Merge branch 'master' into feature/issue_7231 2023-03-14 12:19:05 +01:00
Sébastien Loriot b1d2744821 Merge branch 'master' into PMP-decimation 2023-03-02 14:24:27 +01:00
Laurent Rineau 78e2d5e4d2 Merge pull request #6478 from afabri/Nef_3-replace_deque_by_vector_and_reserve-GF
Nef_3: Add overloads with ORIGIN in predicates
2023-03-02 13:42:35 +01:00
Laurent Rineau a5052f4cd8 Merge pull request #6835 from MaelRL/CGAL-Clean_CMakeLists.txt-GF
Some CMakeLists.txts cleaning
2023-02-16 10:52:29 +01:00
Sébastien Loriot fbe559adc9 Merge 'cgal/master' into PMP-decimation 2023-02-14 08:33:24 +01:00
Laurent Rineau 07672d9fa4
Kernel_23: inconsistent documentation (#6916)
Made preconditions in the C++ form.
2023-02-02 11:28:46 +01:00
albert-github d7f3bba742 issue #7231 Improvement of layout of refines relations.
Implemented:
- no extra "Refines" page
- Refines on one line
- Refines always in code style
- `2 arguments` -> `two arguments`  (for consistency
- added also the `\qualifier`

Implemented in  Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h
Results a.o.
- doc_output/Kernel_23/classKernel_1_1Circle__2.html
- doc_output/Kernel_23/classKernel_1_1BoundedSide__3.html

Note: due to the fact that this is a test implementation pages outside the scope of Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h might not be correct (in respect to code appearance of refines and multiple refines)
2023-02-01 18:13:16 +01:00
Sébastien Loriot 9e137bca24 Merge 'cgal/master' 2023-01-31 12:26:55 +01:00
Mael Rouxel-Labbé 73f21752a3 Add missing overloads of ConstructWeightedCircumcenter_3 to the Kernel concept 2023-01-30 16:36:15 +01:00
Mael 153c603209
Merge branch 'master' into CGAL-Clean_CMakeLists.txt-GF 2023-01-27 22:09:02 +01:00
Laurent Rineau 5f8930db8c Merge branch '5.5.x-branch'
# Conflicts:
#	Convex_hull_2/test/Convex_hull_2/ch_test_CH.cpp
#	Convex_hull_2/test/Convex_hull_2/ch_test_SC.cpp
#	Convex_hull_2/test/Convex_hull_2/ch_test_SH.cpp
#	Convex_hull_2/test/Convex_hull_2/ch_test_SS.cpp
#	Straight_skeleton_2/include/CGAL/constructions/Straight_skeleton_cons_ftC2.h
#	Straight_skeleton_2/include/CGAL/predicates/Straight_skeleton_pred_ftC2.h
2023-01-27 21:16:14 +01:00
Laurent Rineau 8a6b583780 Merge pull request #6880 from soesau/PMP-tests_only_for_epeck-soesau
Pmp tests only for epeck
2023-01-27 21:02:26 +01:00
Andreas Fabri 404cf8f0c2 Projection_traits_xy_3: Enable structural filtering 2023-01-09 11:13:29 +00:00
Mael 0ff7882997
Merge branch 'master' into feature/bug_documentation_spell_20221113 2022-12-06 22:21:06 +01:00
Mael 6538b22e06
Merge branch 'master' into CGAL-Clean_CMakeLists.txt-GF 2022-12-05 16:03:41 +01:00
Laurent Rineau e8ec440859 Merge branch 'master' into Kernel-Compare_distance_3_RT_FT__always_Filtered_predicate_RT_FT-GF
# Conflicts:
#	STL_Extension/doc/STL_Extension/CGAL/Concurrent_compact_container.h
2022-12-05 14:51:31 +01:00
Laurent Rineau 861ce1deed Merge pull request #7078 from MaelRL/Kernel_23-Fix_missing_CP3_overload-GF
Fix the Kernel concept being weaker than TriangulationTraits_23 requirements
2022-12-05 12:22:01 +01:00
Laurent Rineau 802d648f04 Merge pull request #7078 from MaelRL/Kernel_23-Fix_missing_CP3_overload-GF
Fix the Kernel concept being weaker than TriangulationTraits_23 requirements
2022-12-05 11:57:14 +01:00
Mael da0b13699c
Merge branch 'master' into Kernel-Compare_distance_3_RT_FT__always_Filtered_predicate_RT_FT-GF 2022-12-02 23:19:29 +01:00
Mael 2b44e11fb5
Apply suggestions from @albert-github & @afabri 2022-11-24 13:10:22 +01:00
Mael Rouxel-Labbé 3b640e5e0a Fix the Kernel concept being weaker than TriangulationTraits_23 requirements 2022-11-23 21:30:31 +01:00
Laurent Rineau bf114a4509 Remove CGAL_EPICK_SINGLE_PRECISION 2022-11-22 16:13:35 +01:00
Mael Rouxel-Labbé 4bb2d13272 Rephrase comment 2022-11-22 12:36:07 +01:00
albert-github 45478184de spelling corrections
Some spelling corrections (Directories starting with `E`-` L`),
some backward work
some forward work
2022-11-15 13:39:40 +01:00
Laurent Rineau fa83872f81 Remove the trailing white space I added by error 2022-11-08 16:02:17 +01:00
Laurent Rineau a6050f4bb3 Fix the comment 2022-11-08 15:57:53 +01:00
Laurent Rineau 7d250c5a2c Fix the testsuite for Homogenous 2022-11-08 15:18:31 +01:00
Laurent Rineau 92d8d1c805 Merge remote-tracking branch 'cgal/master' into CGAL-allow_Epick_with_float-GF
# Conflicts:
#	Mesh_3/test/Mesh_3/test_meshing_3D_image.cpp
2022-11-08 12:11:06 +01:00
Laurent Rineau 51a5ce0c44 Test Simple_precision_epick
... and adapt the code of the testsuite. In particular, there are lots
of cases of inexact constructions that are compared to exact results.
2022-11-08 12:08:58 +01:00
Laurent Rineau 3933d0bec8 Fix a 16 years old todo
Sylvain Pion, wrote in August 2006:
> FIXME : Use Qrt<> here

At that time `Qrt` stood for `Qualified_result_of` (sic, maybe it was
named "qualified result type" at a time).

Now that we can use C++14, we have `decltype(auto)` instead.
2022-11-08 12:07:14 +01:00
Laurent Rineau 3600173ed4 Missing includes, for users of Epick
(even if those headers are probably already included elsewhere)
2022-11-08 12:01:44 +01:00
Laurent Rineau b56a79eacf Compute_[abcd]_[23] return references
That simplifies the code, and is more correct.
2022-11-08 11:06:44 +01:00
Laurent Rineau cb0ad7f509 Use template aliases to factorize code 2022-11-08 11:04:38 +01:00
Laurent Rineau 21f60772a1 Do not enable CGAL_KERNEL_23_TEST_RT_FT_PREDICATE_FLAGS by default 2022-11-07 15:46:13 +01:00
Laurent Rineau 2b41ebaaaa Remove last remnant of C++17 if constexpr 2022-11-07 15:45:58 +01:00
Laurent Rineau 1c5454dcbe Add Converting_construction to Simple_precision_epick
The difficulty is to detect/define which constructions are "trivial"
and must not be wrapped into `Converting_construction`. Otherwise the
use of `Cartesian_converter`, that uses trivial constructions itself,
can lead to loops and infinite call stacks.
2022-10-28 12:07:58 +02:00
Laurent Rineau c685810119 Add Construct_point_on_3(Line_3), for efficiency 2022-10-28 12:07:58 +02:00
Sébastien Loriot 0cac6a9da8 Merge remote-tracking branch 'sloriot/PMP-decimation' into PMP-decimation 2022-10-25 14:55:57 +02:00
Laurent Rineau a46a6db2bb Allow to use test_RT_or_FT_predicates with ninja, and ctest 2022-10-14 12:15:48 +02:00
Mael Rouxel-Labbé f83b970461 Add a comment explaining the purpose of atomic_compilation_test.cpp 2022-10-13 21:24:05 +02:00
Laurent Rineau 3745073df6 Fix a compilation error 2022-10-13 18:25:58 +02:00
Mael Rouxel-Labbé 73de5e49f4 Remove unnecessary include 2022-10-12 21:32:30 +02:00
Mael Rouxel-Labbé 296d9e5cc0 Update RTFT test 2022-10-12 21:28:40 +02:00
Mael Rouxel-Labbé 2c23a6d5c5 Revert back to wrapping result_type to distinguish FT-necessary operator()s 2022-10-12 21:24:59 +02:00
Laurent Rineau 026049cf8e Switch to Epick-with-float using a new macro
If  `CGAL_EPICK_SINGLE_PRECISION` is defined, then the number type
of `CGAL::Epick` is `float` instead of `double`.
2022-10-10 16:15:01 +02:00
Laurent Rineau 0e823324c9 Allow to use an Epick-like kernel with float as FT 2022-10-10 15:49:17 +02:00
Sven Oesau 2c9b5ed528 more tests only for exact kernels in Kernel_23 2022-10-01 16:07:03 +02:00
albert-github 680e144ad1 issue 6891 Kernel_23: inconsistent documentation
Made preconditions in the C++ form.
2022-09-29 18:08:53 +02:00
Laurent Rineau 9d40a225ff
Update Kernel_23/test/Kernel_23/Filtered_cartesian.cpp 2022-09-23 15:32:52 +02:00
Andreas Fabri d3fca65ae5 CGAL: No longer per package assertions 2022-09-23 12:49:40 +01:00
Mael Rouxel-Labbé f417495a0e Handle deleted functions in RT/FT test 2022-09-23 11:35:29 +02:00
Mael Rouxel-Labbé d0fe75e908 Add missing FT_necessary tags 2022-09-23 11:35:12 +02:00
Mael Rouxel-Labbé ae30bcf819 Remove obsolete RT/FT tests 2022-09-22 12:25:25 +02:00
Mael Rouxel-Labbé c93e33c731 Misc minor cleaning/improvements to RT|FT kernel test 2022-09-22 12:06:09 +02:00
Mael Rouxel-Labbé 873cc884b5 Get rid of _RT / _RT_FT kernel interface macros 2022-09-22 12:03:25 +02:00
Mael Rouxel-Labbé 214e072959 Switch from RT_sufficient to FT_necessary 2022-09-22 12:02:53 +02:00
Mael Rouxel-Labbé 01af5bce52 Add an automatic test to detect correct presence/absence of RT_sufficient 2022-09-21 15:03:09 +02:00
Laurent Rineau 04a7b31a07 WIP: test one predicate with a set of arguments with RT 2022-09-15 16:06:28 +02:00
Laurent Rineau a267cee598 Avoid one intermediate call to the global (non-internal) function 2022-09-15 16:05:35 +02:00
Laurent Rineau 36c0a779d7 WIP: how to detect the arity of a predicate 2022-09-14 15:10:49 +02:00
Laurent Rineau f52298a8c5 WIP: try to always use Filtered_predicate_RT_FT 2022-09-08 17:30:14 +02:00
Laurent Rineau 03b1501508 Merge branch 'Kernel-Compare_distance_3_RT_FT-GF' into Kernel-Compare_distance_3_RT_FT__new_proposal-GF 2022-09-07 14:49:45 +02:00
Laurent Rineau dcca65b740 Spelling typo 2022-09-07 14:48:45 +02:00
Laurent Rineau 4b660d9ec9 Another proposal for Filtered_predicate_RT_FT
Instead of having the return type wrapped in a `Needs_FT` tag,
not the call operator overloads that can be called with `RT` are
"tagged" by adding a last argument of type `RT_sufficient` with a
default value.
2022-09-07 11:10:13 +02:00
Mael Rouxel-Labbé 9b265fddf8 Uniformize REQUIRED / QUIET usage:
Following this:
- CGAL: always REQUIRED
- CGAL component: COMPONENT / OPTIONAL_COMPONENT (never QUIET)
- required 3rd party: (not QUIET) + message(NOTICE "") on NOT_FOUND
- optional 3rd party: QUIET + message(STATUS "") except for Polyhedron/demo
- 3rd party components: COMPONENT / OPTIONAL_COMPONENT
                        (QUIET depending on required or optional 3rd party)
2022-09-06 16:24:27 +02:00
Laurent Rineau 7c92341be7 Introduce CGAL_Kernel_pred_RT_or_FT
This commit introduces a new kind of predicate in
`<CGAL/Kernel/interface_macros.h>`. In addition to
  - `CGAL_kernel_pred` for predicates,
  - `CGAL_Kernel_pred_RT` for predicates that can be implemented using a
    ring-type,

now there is also:
  - `CGAL_Kernel_pred_RT_or_FT` for predicates with multiple overloads of
    `operator()`, some needing a field type and other needing a ring type
    (without the division operator).

The C++ code can discriminate between the two cases with a special wrapper
for the return type: `CGAL::Needs_FT<result_type` instead of `result_type`
(defined in `<CGAL/tags.h>`.

In `<CGAL/Filtered_predicate.h>`, in addition to the usual class template
 `Filtered_predicate`, there is now also `Filtered_predicate_RT_FT` that
 takes three predicates as template parameters instead of two:
  - the exact predicate with an ring-type,
  - the exact predicate with a field-type,
  - the approximate predicate (with `Interval_nt` as number-type).

For the moment, only `Compare_distance_3` in
`<CGAL/Cartesian/function_objects.h>` is using the new
`Filtered_predicate_RT_FT`.

Before this commit, the file
`Kernel_23/test/Kernel_23/include/CGAL/_test_new_3.h` was testing
`Compare_distance_3` only with three points or for points. This commit adds:
  - a test with `Point_3, Point_3, Segment_3`, and
  - a test with `Line_3, Point_3, Point_3`, that actually needs a field type
    with its current implementation.

In the test `Kernel_23/test/Kernel_23/Filtered_cartesian.cpp`, the macro
`CGAL_NO_MPZF_DIVISION_OPERATOR` is defined, to remove the division operator
from `CGAL::Mpzf`. `CGAL::Mpzf` is a ring-type, even with its `operator/`
(because that `operator/` can only compute exact divisions), but with
`CGAL_NO_MPZF_DIVISION_OPERATOR` defined, that is now checked by the compiler.
2022-09-02 11:31:47 +02:00
Sébastien Loriot 861588abe1 Merge 'sloriot/CGAL-std_type_traits' into master 2022-08-03 20:19:51 +02:00
Sébastien Loriot 1e857506c1 Merge remote-tracking branch 'cgal/5.5.x-branch' 2022-07-12 18:22:02 +02:00
Sébastien Loriot 12795ba29c Merge remote-tracking branch 'cgal/5.4.x-branch' into HEAD 2022-07-12 18:21:16 +02:00
Sébastien Loriot 45b5fd43f8 fix more warnings 2022-07-12 18:18:34 +02:00
Mael Rouxel-Labbé d07434708a Merge remote-tracking branch 'cgal/master' into CH2-Fix_bykat-GF 2022-07-11 09:39:45 +02:00
Mael Rouxel-Labbé 384cddadec Fix some result_types in projection traits 2022-07-05 10:11:44 +02:00