1 // Copyright (c) 2005-2006  INRIA Sophia-Antipolis (France).
2 // All rights reserved.
3 //
4 // This file is part of CGAL (www.cgal.org).
5 //
6 // Partially supported by the IST Programme of the EU as a Shared-cost
7 // RTD (FET Open) Project under Contract No  IST-2000-26473
8 // (ECG - Effective Computational Geometry for Curves and Surfaces)
9 // and a STREP (FET Open) Project under Contract No  IST-006413
10 // (ACS -- Algorithms for Complex Shapes)
11 //
12 // $URL: https://github.com/CGAL/cgal/blob/v5.3/Algebraic_kernel_for_spheres/include/CGAL/Algebraic_kernel_for_spheres_2_3.h $
13 // $Id: Algebraic_kernel_for_spheres_2_3.h 0779373 2020-03-26T13:31:46+01:00 Sébastien Loriot
14 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
15 //
16 // Author(s) : Monique Teillaud <Monique.Teillaud@sophia.inria.fr>
17 //             Sylvain Pion
18 //             Pedro Machado
19 //             Julien Hazebrouck
20 //             Damien Leroy
21 
22 #ifndef CGAL_ALGEBRAIC_KERNEL_FOR_SPHERES_2_3_H
23 #define CGAL_ALGEBRAIC_KERNEL_FOR_SPHERES_2_3_H
24 
25 #include <CGAL/license/Circular_kernel_3.h>
26 
27 
28 #include <CGAL/Root_of_traits.h>
29 #include <CGAL/Polynomials_2_3.h>
30 #include <CGAL/Polynomials_1_3.h>
31 #include <CGAL/Polynomials_for_line_3.h>
32 #include <CGAL/Root_for_spheres_2_3.h>
33 
34 #include <CGAL/Algebraic_kernel_for_spheres/function_objects_on_roots_and_polynomials_2_3.h>
35 #include <CGAL/global_functions_on_roots_and_polynomials_1_3.h>
36 #include <CGAL/global_functions_on_roots_and_polynomials_2_3.h>
37 #include <CGAL/global_functions_on_root_for_sphere_2_3.h>
38 
39 namespace CGAL {
40 
41   template< class RT_ >
42   struct Algebraic_kernel_for_spheres_2_3
43   {
44     typedef Algebraic_kernel_for_spheres_2_3<RT_>      Self;
45 
46     typedef RT_                                        RT;
47     typedef typename Root_of_traits< RT >::RootOf_1    FT;
48 
49     typedef CGAL::Polynomials_for_line_3<FT>           Polynomials_for_line_3;
50     typedef CGAL::Polynomial_for_spheres_2_3<FT>       Polynomial_for_spheres_2_3;
51     typedef CGAL::Polynomial_1_3<FT>                   Polynomial_1_3;
52     // problem RT / FT ?
53 
54     typedef typename Root_of_traits< RT >::RootOf_2    Root_of_2;
55     typedef CGAL::Root_for_spheres_2_3< RT >           Root_for_spheres_2_3;
56 
57     typedef AlgebraicSphereFunctors::Construct_polynomial_for_spheres_2_3<Self>
58                                          Construct_polynomial_for_spheres_2_3;
59     typedef AlgebraicSphereFunctors::Construct_polynomial_1_3<Self>
60                                          Construct_polynomial_1_3;
61     typedef AlgebraicSphereFunctors::Construct_polynomials_for_line_3<Self>
62                                          Construct_polynomials_for_line_3;
63 
64     typedef AlgebraicSphereFunctors::Solve<Self>             Solve;
65     typedef AlgebraicSphereFunctors::Sign_at<Self>           Sign_at;
66     typedef AlgebraicSphereFunctors::X_critical_points<Self> X_critical_points;
67     typedef AlgebraicSphereFunctors::Y_critical_points<Self> Y_critical_points;
68     typedef AlgebraicSphereFunctors::Z_critical_points<Self> Z_critical_points;
69     typedef AlgebraicSphereFunctors::Compare_x<RT>           Compare_x;
70     typedef AlgebraicSphereFunctors::Compare_y<RT>           Compare_y;
71     typedef AlgebraicSphereFunctors::Compare_z<RT>           Compare_z;
72     typedef AlgebraicSphereFunctors::Compare_xy<RT>          Compare_xy;
73     typedef AlgebraicSphereFunctors::Compare_xyz<RT>         Compare_xyz;
74 
75     Construct_polynomial_for_spheres_2_3
construct_polynomial_for_spheres_2_3_objectAlgebraic_kernel_for_spheres_2_376                  construct_polynomial_for_spheres_2_3_object() const
77     { return Construct_polynomial_for_spheres_2_3(); }
78 
79     Construct_polynomial_1_3
construct_polynomial_1_3_objectAlgebraic_kernel_for_spheres_2_380                  construct_polynomial_1_3_object() const
81     { return Construct_polynomial_1_3(); }
82 
83     Construct_polynomials_for_line_3
construct_polynomials_for_line_3_objectAlgebraic_kernel_for_spheres_2_384                  construct_polynomials_for_line_3_object() const
85     { return Construct_polynomials_for_line_3(); }
86 
solve_objectAlgebraic_kernel_for_spheres_2_387     Solve solve_object() const
88     { return Solve(); }
89 
sign_at_objectAlgebraic_kernel_for_spheres_2_390     Sign_at sign_at_object() const
91     { return Sign_at(); }
92 
x_critical_points_objectAlgebraic_kernel_for_spheres_2_393     X_critical_points x_critical_points_object() const
94     { return X_critical_points(); }
95 
y_critical_points_objectAlgebraic_kernel_for_spheres_2_396     Y_critical_points y_critical_points_object() const
97     { return Y_critical_points(); }
98 
z_critical_points_objectAlgebraic_kernel_for_spheres_2_399     Z_critical_points z_critical_points_object() const
100     { return Z_critical_points(); }
101 
compare_x_objectAlgebraic_kernel_for_spheres_2_3102     Compare_x compare_x_object() const
103     { return Compare_x(); }
104 
compare_y_objectAlgebraic_kernel_for_spheres_2_3105     Compare_y compare_y_object() const
106     { return Compare_y(); }
107 
compare_z_objectAlgebraic_kernel_for_spheres_2_3108     Compare_z compare_z_object() const
109     { return Compare_z(); }
110 
compare_xy_objectAlgebraic_kernel_for_spheres_2_3111     Compare_xy compare_xy_object() const
112     { return Compare_xy(); }
113 
compare_xyz_objectAlgebraic_kernel_for_spheres_2_3114     Compare_xyz compare_xyz_object() const
115     { return Compare_xyz(); }
116 
117   };
118 
119 } //namespace CGAL
120 
121 #endif // CGAL_ALGEBRAIC_KERNEL_FOR_SPHERES_2_3_H
122