// Copyright (c) 2003-2008 INRIA Sophia-Antipolis (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v5.2/Circular_kernel_3/include/CGAL/global_functions_spherical_kernel_3.h $ // $Id: global_functions_spherical_kernel_3.h 0779373 2020-03-26T13:31:46+01:00 Sébastien Loriot // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Monique Teillaud, Sylvain Pion, Pedro Machado, // Sebastien Loriot, Julien Hazebrouck, Damien Leroy // Partially supported by the IST Programme of the EU as a Shared-cost // RTD (FET Open) Project under Contract No IST-2000-26473 // (ECG - Effective Computational Geometry for Curves and Surfaces) // and a STREP (FET Open) Project under Contract No IST-006413 // (ACS -- Algorithms for Complex Shapes) #ifndef CGAL_SPHERICAL_KERNEL_GLOBAL_FUNCTIONS_CIRCULAR_KERNEL_3_H #define CGAL_SPHERICAL_KERNEL_GLOBAL_FUNCTIONS_CIRCULAR_KERNEL_3_H #include #include #include // global functions namespace CGAL { template class Circular_arc_3; template class Circular_arc_point_3; template class Circle_3; template class Sphere_3; template class Vector_3; template Circular_arc_point_3 x_extremal_point(const Circle_3 & c, bool i) { return SphericalFunctors::x_extremal_point(c,i); } template OutputIterator x_extremal_points(const Circle_3 & c, OutputIterator res) { return SphericalFunctors::x_extremal_points(c,res); } template Circular_arc_point_3 y_extremal_point(const Circle_3 & c, bool i) { return SphericalFunctors::y_extremal_point(c,i); } template OutputIterator y_extremal_points(const Circle_3 & c, OutputIterator res) { return SphericalFunctors::y_extremal_points(c,res); } template Circular_arc_point_3 z_extremal_point(const Circle_3 & c, bool i) { return SphericalFunctors::z_extremal_point(c,i); } template OutputIterator z_extremal_points(const Circle_3 & c, OutputIterator res) { return SphericalFunctors::z_extremal_point(c,res); } template Circular_arc_point_3 x_extremal_point(const Sphere_3 & c, bool i) { return SphericalFunctors::x_extremal_point(c,i); } template OutputIterator x_extremal_points(const Sphere_3 & c, OutputIterator res) { return SphericalFunctors::x_extremal_points(c,res); } template Circular_arc_point_3 y_extremal_point(const Sphere_3 & c, bool i) { return SphericalFunctors::y_extremal_point(c,i); } template OutputIterator y_extremal_points(const Sphere_3 & c, OutputIterator res) { return SphericalFunctors::y_extremal_points(c,res); } template Circular_arc_point_3 z_extremal_point(const Sphere_3 & c, bool i) { return SphericalFunctors::z_extremal_point(c,i); } template OutputIterator z_extremal_points(const Sphere_3 & c, OutputIterator res) { return SphericalFunctors::z_extremal_points(c,res); } template< class CK > inline CGAL::Comparison_result compare_x(const Circular_arc_point_3 &p, const Circular_arc_point_3 &q) { return CK().compare_x_3_object()(p, q); } template< class CK > inline CGAL::Comparison_result compare_y(const Circular_arc_point_3 &p, const Circular_arc_point_3 &q) { return CK().compare_y_3_object()(p, q); } template< class CK > inline CGAL::Comparison_result compare_z(const Circular_arc_point_3 &p, const Circular_arc_point_3 &q) { return CK().compare_z_3_object()(p, q); } template< class CK > inline CGAL::Comparison_result compare_xy(const Circular_arc_point_3 &p, const Circular_arc_point_3 &q) { return CK().compare_xy_3_object()(p, q); } template< class CK > inline CGAL::Comparison_result compare_xyz(const Circular_arc_point_3 &p, const Circular_arc_point_3 &q) { return CK().compare_xyz_3_object()(p, q); } template CGAL::Circle_type classify(const Circle_3& c,const Sphere_3 & s) { return SphericalFunctors::classify_circle_3(c,s); } template bool is_theta_monotone(const Circular_arc_3& arc,const Sphere_3 & s) { return SphericalFunctors::is_theta_monotone_3(arc,s); } template CGAL::Comparison_result compare_theta(const Circular_arc_point_3& pt1,const Circular_arc_point_3& pt2,const Sphere_3& sphere) { return SphericalFunctors::compare_theta_of_pts(pt1,pt2,sphere); } template CGAL::Comparison_result compare_theta(const Circular_arc_point_3& pt,const Vector_3& v,const Sphere_3& sphere) { return SphericalFunctors::compare_theta_pt_vector(pt,v,sphere); } template CGAL::Comparison_result compare_theta(const Vector_3& v,const Circular_arc_point_3& pt,const Sphere_3& sphere) { return CGAL::opposite(SphericalFunctors::compare_theta_pt_vector(pt,v,sphere)); } template CGAL::Comparison_result compare_theta(const Vector_3&m1,const Vector_3&m2) { return SphericalFunctors::compare_theta_vectors(m1,m2); } template CGAL::Comparison_result compare_theta_z(const Circular_arc_point_3& pt1,const Circular_arc_point_3& pt2,const Sphere_3& sphere) { return SphericalFunctors::compare_theta_z(pt1,pt2,sphere); } template typename SK::Circular_arc_point_3 theta_extremal_point(const Circle_3& circle,const Sphere_3& sphere,bool is_smallest) { return SphericalFunctors::theta_extremal_point(circle,sphere,is_smallest); } template OutputIterator theta_extremal_points(const Circle_3& circle,const Sphere_3& sphere,OutputIterator out_it) { return SphericalFunctors::theta_extremal_points(circle,sphere,out_it); } } //namespace CGAL #endif // CGAL_SPHERICAL_KERNEL_GLOBAL_FUNCTIONS_CIRCULAR_KERNEL_3_H