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