Commit Graph
153 Commits
Author SHA1 Message Date
Laurent Rineau f52298a8c5 WIP: try to always use Filtered_predicate_RT_FT 2022-09-08 17:30:14 +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
Laurent Rineau b114789abf Fix spelling 2022-09-06 13:56:31 +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
Mael Rouxel-Labbé 93c47ec702 Use cmp_signed_dist_to_directionC2 for Compare_signed_distance_to_line_2 2022-06-30 16:23:09 +02:00
Mael Rouxel-Labbé 19162905eb Clean and factorize robust circumcenter filtered traits 2022-04-04 11:33:27 +02:00
Sébastien Loriot b9a14a447f Merge pull request #6426 from afabri/Kernel_23-Call_function_objects-GF
Kernel_23: Call function objects from CGAL::Segment_3
2022-03-29 17:47:06 +02:00
Andreas Fabri d39c7742f1 Kernel_23: Call function objects from CGAL::Segment_3 2022-03-17 12:14:43 +01:00
Andreas Fabri 9a2d782345 No need for parameter 2022-03-15 12:42:56 +01:00
Andreas FabriandMael 7a7e1d2724 Update Cartesian_kernel/include/CGAL/Cartesian/function_objects.h
Co-authored-by: Mael <mael.rouxel.labbe@geometryfactory.com>
2022-03-11 11:13:42 +01:00
Andreas Fabri 6e4483a7d0 The same for Construct_orthogonal_vector_3 2022-03-10 14:18:48 +00:00
Andreas Fabri f01e24c75b Add Orientation_3::operator()(Origin,Point_3,Point_3,Point_3) 2022-03-10 10:55:44 +00:00
Laurent Rineau 1fb32e70b4 Merge pull request #5978 from janetournois/Mesh_2-add_predicate_for_lloyd-jtournois
Mesh 2 and Kernel - add predicate oriented_side_2(segment, triangle)
2021-10-27 17:20:28 +02:00
Mael Rouxel-Labbé e424356ffa Add Construct_projected_point_3(P3, P3) + correct parameter order
Not a kernel requirement
2021-09-28 15:34:51 +02:00
Jane Tournois b3a0beb366 make implementation more consistent with the other functions in the same file 2021-09-21 10:58:45 +02:00
Jane Tournois b9de94de93 add assertions to avoid degenerate inputs 2021-09-10 14:10:11 +02:00
Jane Tournois 8bb7e62c1c apply review 2021-09-10 13:56:12 +02:00
Jane Tournois 7e3af5cbda move the implementation of segment_hides_circumcenter() to the kernel
to use filtered predicates
2021-09-10 11:26:53 +02:00
Mael Rouxel-Labbé 8a92d51601 Merge branch 'Distance_3-Add_Tri_Tri-GF-old' into Distance_3-Add_Tri_Tri-GF 2021-09-02 17:26:44 +02:00
Sebastien Loriot e5279db7fb Merge pull request #5777 from MaelRL/AABB-Dont_call_global_do_intersect-GF
Misc fixes for Intersections_3 + related
2021-09-02 15:44:53 +02:00
Sebastien Loriot 92d90a4a11 Merge pull request #5667 from afabri/Kernel-compare_slopes-GF
Kernel: Add compare_slope with 4 points
2021-08-12 10:12:26 +02:00
Laurent Rineau 0f906ae606 Merge pull request #5545 from Dig-Doug/segment-midpoint
Segment_2/Segment_3 midpoint()
2021-07-07 14:37:38 +02:00
Mael Rouxel-Labbé 03ab79899b Fix Construct_radical_plane_3 for Homogeneous_kernel 2021-06-29 09:24:53 +02:00
Mael Rouxel-Labbé 084a1efe2d Merge remote-tracking branch 'cgal/master' into Distance_3-Add_Tri_Tri-GF 2021-06-23 22:30:03 +02:00
Andreas Fabri 6aeb4eea08 remove trailing whitespace 2021-05-03 16:42:30 +02:00
Andreas Fabri 4e1ebec30a untabify 2021-05-01 17:04:52 +02:00
Andreas Fabri 20d1629e1b Add compare_slope with 4 points 2021-04-30 17:39:57 +02:00
Laurent Rineau c091c7f86e Merge pull request #5532 from lrineau/Kernel_23-Do_interesect__without_division-GF
Remove operator/ from CGAL::Mpzf and implement Do_intersect_3 with RT only (without division)
2021-04-28 15:24:15 +02:00
Andreas Fabri d3b26a60cb The free function must call the functor 2021-04-22 17:35:27 +01:00
Mael Rouxel-Labbé 5deb509374 Move to Distance_3/X_Y.h rather than squared_distance_X_Y.h (as Intersections) 2021-04-12 14:42:44 +02:00
Andreas Fabri ae945cd329 Avoid division for bounded side test 2021-03-18 14:18:11 +01:00
Mael Rouxel-Labbé 596f3e3013 Fix namespaces 2021-03-12 14:34:36 +01:00
Mael Rouxel-Labbé 2adddeacc1 Add missing includes 2021-03-12 13:08:16 +01:00
Mael Rouxel-Labbé 6b0459c686 Re-organize squared_distance_3_x.h into squared_distance_O1_O2.h
+ minor improvements (missing overloads, obvious improvements, etc.)
2021-03-12 12:51:59 +01:00
Mael Rouxel-Labbé 69d215a33e Fix erroneous description in Kernel_23::Coplanar_orienation_3 2021-01-27 10:06:03 +01:00
Sébastien Loriot 4527b1f52c extra run of the script to remove tabs and trailing whitespaces 2020-03-26 19:01:49 +01:00
Sébastien Loriot a943082eff Update branch from master after trailing whitespaces and tabs removal 2020-03-26 19:01:31 +01:00
Sébastien Loriot 0779373835 extra run of the script to remove tabs and trailing whitespaces
right after the  merge of 4.14 release branch

+ manual fix on one line in:
    * Arrangement_on_surface_2/include/CGAL/IO/Arr_text_formatter.h
    * .travis/generate_travis.sh
2020-03-26 14:16:06 +01:00
Andreas Fabri 99eea7ac21 Add operator for line/point/point 2020-02-25 16:47:12 +00:00
Mael Rouxel-Labbé 4536ea4f53 Clean whitespace (no changes) 2020-01-16 12:33:01 +01:00
Andreas Fabri 3bd0adf61f Adress Mael's review 2020-01-15 16:44:13 +01:00
Sébastien Loriot 52164b1fba First pass on removing license notice in header for LGPL files 2019-10-19 15:40:30 +02:00
Sébastien Loriot 7356421d80 introduce Commercial license SPDX tag 2019-10-19 12:15:19 +02:00
Sébastien Loriot 9bd9c68b83 update LGPL[23]+ and GPL[23]+ SPDX tags
ack -l --no-svg "SPDX-License-Identifier: GPL-3.0\+" | xargs sed -i "s/SPDX-License-Identifier: GPL-3.0+/SPDX-License-Identifier: GPL-3.0-or-later/"
ack -l --no-svg "SPDX-License-Identifier: LGPL-3.0\+" | xargs sed -i "s/SPDX-License-Identifier: LGPL-3.0+/SPDX-License-Identifier: LGPL-3.0-or-later/"
ack -l --no-svg "SPDX-License-Identifier: GPL-2.0\+" | xargs sed -i "s/SPDX-License-Identifier: GPL-2.0+/SPDX-License-Identifier: GPL-2.0-or-later/"
ack -l --no-svg "SPDX-License-Identifier: LGPL-2.0\+" | xargs sed -i "s/SPDX-License-Identifier: LGPL-2.0+/SPDX-License-Identifier: LGPL-2.0-or-later/"
2019-10-18 21:57:54 +02:00
Andreas Fabri 69a42baba6 remove typename 2019-09-02 08:46:50 +02:00
Andreas Fabri 0f267c53e3 Make 2d segment segment distance more robust for kernel without exact constructions 2019-08-29 14:54:03 +02:00
Mael Rouxel-Labbé 6c8a8f347d Change ray/line.point(int --> FT)
There is no real requirement on it being an 'int', except some symmetry with
the segment.
2019-07-26 15:59:52 +02:00
Maxime Gimeno bcfb7afead Add an operator for a Ray_3 to ConstructProjectedpoint_3 2018-04-25 15:32:36 +02:00
Laurent Rineau cd6fe20bd4 Merge branch 'releases/CGAL-4.11-branch' 2018-03-26 11:03:37 +02:00
Sébastien Loriot a443f85a52 fix the determinism of the computation of point and base vectors
possibly will return true in case the evaluation lead to true or false
as possible values. If the exact value is computed or interval refined,
false could be the true value which has a consequence will give a
different result for point or base vector.
2018-03-16 14:33:51 +01:00