1 // Copyright (c) 2008  INRIA Sophia-Antipolis (France).
2 // All rights reserved.
3 //
4 // This file is part of CGAL (www.cgal.org).
5 //
6 // $URL: https://github.com/CGAL/cgal/blob/v5.3/Circular_kernel_3/include/CGAL/Circular_kernel_3/internal_function_compare_spherical_kernel.h $
7 // $Id: internal_function_compare_spherical_kernel.h 0779373 2020-03-26T13:31:46+01:00 Sébastien Loriot
8 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
9 //
10 // Author(s) : Monique Teillaud, Sylvain Pion, Pedro Machado,
11 //             Julien Hazebrouck, Damien Leroy
12 
13 // Partially supported by the IST Programme of the EU as a
14 // STREP (FET Open) Project under Contract No  IST-006413
15 // (ACS -- Algorithms for Complex Shapes)
16 
17 #ifndef CGAL_SPHERICAL_KERNEL_PREDICATES_COMPARE_3_H
18 #define CGAL_SPHERICAL_KERNEL_PREDICATES_COMPARE_3_H
19 
20 #include <CGAL/license/Circular_kernel_3.h>
21 
22 
23 namespace CGAL {
24   namespace SphericalFunctors {
25 
26   // we can optimize those functions by comparing
27   // the references before doing the comparison
28   // as in CK
29   template < class SK >
30   inline
31   Comparison_result
compare_x(const typename SK::Circular_arc_point_3 & p0,const typename SK::Circular_arc_point_3 & p1)32   compare_x(const typename SK::Circular_arc_point_3 &p0,
33             const typename SK::Circular_arc_point_3 &p1)
34   {
35     typedef typename SK::Algebraic_kernel   Algebraic_kernel;
36     return Algebraic_kernel().compare_x_object()(p0.coordinates(), p1.coordinates());
37   }
38 
39   template < class SK >
40   inline
41   Comparison_result
compare_y(const typename SK::Circular_arc_point_3 & p0,const typename SK::Circular_arc_point_3 & p1)42   compare_y(const typename SK::Circular_arc_point_3 &p0,
43             const typename SK::Circular_arc_point_3 &p1)
44   {
45     typedef typename SK::Algebraic_kernel   Algebraic_kernel;
46     return Algebraic_kernel().compare_y_object()(p0.coordinates(), p1.coordinates());
47   }
48 
49   template < class SK >
50   inline
51   Comparison_result
compare_z(const typename SK::Circular_arc_point_3 & p0,const typename SK::Circular_arc_point_3 & p1)52   compare_z(const typename SK::Circular_arc_point_3 &p0,
53             const typename SK::Circular_arc_point_3 &p1)
54   {
55     typedef typename SK::Algebraic_kernel   Algebraic_kernel;
56     return Algebraic_kernel().compare_z_object()(p0.coordinates(), p1.coordinates());
57   }
58 
59   template < class SK >
60   inline
61   Comparison_result
compare_xy(const typename SK::Circular_arc_point_3 & p0,const typename SK::Circular_arc_point_3 & p1)62   compare_xy(const typename SK::Circular_arc_point_3 &p0,
63              const typename SK::Circular_arc_point_3 &p1)
64   {
65     typedef typename SK::Algebraic_kernel   Algebraic_kernel;
66     return Algebraic_kernel().compare_xy_object()(p0.coordinates(), p1.coordinates());
67   }
68 
69   template < class SK >
70   inline
71   Comparison_result
compare_xyz(const typename SK::Circular_arc_point_3 & p0,const typename SK::Circular_arc_point_3 & p1)72   compare_xyz(const typename SK::Circular_arc_point_3 &p0,
73               const typename SK::Circular_arc_point_3 &p1)
74   {
75     typedef typename SK::Algebraic_kernel   Algebraic_kernel;
76     return Algebraic_kernel().compare_xyz_object()(p0.coordinates(), p1.coordinates());
77   }
78 
79   }//SphericalFunctors
80 }//CGAL
81 
82 #endif //CGAL_SPHERICAL_KERNEL_PREDICATES_COMPARE_3_H
83