BWAPI
|
00001 // Copyright (c) 2003-2008 INRIA Sophia-Antipolis (France). 00002 // All rights reserved. 00003 // 00004 // This file is part of CGAL (www.cgal.org); you may redistribute it under 00005 // the terms of the Q Public License version 1.0. 00006 // See the file LICENSE.QPL distributed with CGAL. 00007 // 00008 // Licensees holding a valid commercial license may use this file in 00009 // accordance with the commercial license agreement provided with the software. 00010 // 00011 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00012 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00013 // 00014 // $URL: svn+ssh://pmachado@scm.gforge.inria.fr/svn/cgal/trunk/Circular_kernel_2/include/CGAL/global_functions_on_line_arcs_2.h $ 00015 // $Id: global_functions_on_line_arcs_2.h 45945 2008-10-01 12:25:23Z pmachado $ 00016 // 00017 // Author(s) : Monique Teillaud, Sylvain Pion, Julien Hazebrouck, Pedro Machado 00018 00019 // Partially supported by the IST Programme of the EU as a Shared-cost 00020 // RTD (FET Open) Project under Contract No IST-2000-26473 00021 // (ECG - Effective Computational Geometry for Curves and Surfaces) 00022 // and a STREP (FET Open) Project under Contract No IST-006413 00023 // (ACS -- Algorithms for Complex Shapes) 00024 00025 00026 #ifndef CGAL_CIRCULAR_KERNEL_GLOBAL_FUNCTIONS_CIRCULAR_KERNEL_2_H 00027 #define CGAL_CIRCULAR_KERNEL_GLOBAL_FUNCTIONS_CIRCULAR_KERNEL_2_H 00028 00029 // global functions 00030 00031 #include <CGAL/Circular_arc_2.h> 00032 #include <CGAL/Circular_arc_point_2.h> 00033 #include <CGAL/Line_arc_2.h> 00034 #include <CGAL/Circular_kernel_2/internal_functions_on_circle_2.h> 00035 00036 CGAL_BEGIN_NAMESPACE 00037 00038 template <class CK> 00039 Circular_arc_point_2<CK> 00040 x_extremal_point(const Circle_2<CK> & c, bool i) 00041 { 00042 return CircularFunctors::x_extremal_point<CK>(c,i); 00043 } 00044 00045 template <class CK, class OutputIterator> 00046 OutputIterator 00047 x_extremal_points(const Circle_2<CK> & c, OutputIterator res) 00048 { 00049 return CircularFunctors::x_extremal_points<CK>(c,res); 00050 } 00051 00052 template <class CK> 00053 Circular_arc_point_2<CK> 00054 y_extremal_point(const Circle_2<CK> & c, bool i) 00055 { 00056 return CircularFunctors::y_extremal_point<CK>(c,i); 00057 } 00058 00059 template <class CK, class OutputIterator> 00060 OutputIterator 00061 y_extremal_points(const Circle_2<CK> & c, OutputIterator res) 00062 { 00063 return CircularFunctors::y_extremal_points<CK>(c,res); 00064 } 00065 00066 // Not Documented 00067 template< class CK > 00068 inline 00069 CGAL::Comparison_result 00070 compare_x(const Circular_arc_2<CK> &A1, const bool b1, 00071 const Circular_arc_2<CK> &A2, const bool b2) 00072 { 00073 return CK().compare_x_2_object()(A1, b1, A2, b2); 00074 } 00075 00076 template< class CK > 00077 inline 00078 CGAL::Comparison_result 00079 compare_x(const Circular_arc_point_2<CK> &p, const Circular_arc_point_2<CK> &q) 00080 { 00081 return CK().compare_x_2_object()(p, q); 00082 } 00083 00084 template< class CK > 00085 inline 00086 CGAL::Comparison_result 00087 compare_y(const Circular_arc_point_2<CK> &p, const Circular_arc_point_2<CK> &q) 00088 { 00089 return CK().compare_y_2_object()(p, q); 00090 } 00091 00092 template< class CK > 00093 inline 00094 CGAL::Comparison_result 00095 compare_xy(const Circular_arc_point_2<CK> &p, const Circular_arc_point_2<CK> &q) 00096 { 00097 return CK().compare_xy_2_object()(p, q); 00098 } 00099 00100 template< class CK > 00101 inline 00102 CGAL::Comparison_result 00103 compare_y_to_right(const Circular_arc_2<CK> &A1, 00104 const Circular_arc_2<CK> &A2, 00105 const Circular_arc_point_2<CK> &p) 00106 { 00107 return CK().compare_y_to_right_2_object()(A1, A2, p); 00108 } 00109 00110 template < class CK > 00111 inline 00112 bool 00113 has_in_x_range(const Circular_arc_2<CK> &A, const Circular_arc_point_2<CK> &p) 00114 { 00115 return CK().in_x_range_2_object()(A, p); 00116 } 00117 00118 template < class CK > 00119 CGAL::Comparison_result 00120 compare_y_at_x(const Circular_arc_point_2<CK> &p, const Circular_arc_2<CK> &a) 00121 { 00122 return CK().compare_y_at_x_2_object()(p, a); 00123 } 00124 00125 template < class CK, class OutputIterator > 00126 OutputIterator 00127 make_x_monotone(const Circular_arc_2<CK> &A, OutputIterator it) 00128 { 00129 return CK().make_x_monotone_2_object()(A, it); 00130 } 00131 00132 template < class CK, class OutputIterator > 00133 OutputIterator 00134 make_xy_monotone(const Circular_arc_2<CK> &A, OutputIterator it) 00135 { 00136 return CK().make_xy_monotone_2_object()(A, it); 00137 } 00138 00139 template< class CK > 00140 inline 00141 bool 00142 has_on(const Circle_2<CK> &c, const Circular_arc_point_2<CK> &p) 00143 { 00144 return CK().has_on_2_object()(c, p); 00145 } 00146 00147 // Not Documented 00148 template< class CK > 00149 inline 00150 CGAL::Comparison_result 00151 compare_y_to_right(const Line_arc_2<CK> &A1, 00152 const Line_arc_2<CK> &A2, 00153 const Circular_arc_point_2<CK> &p) 00154 { 00155 return CK().compare_y_to_right_2_object()(A1, A2, p); 00156 } 00157 00158 template < class CK > 00159 inline 00160 bool 00161 has_in_x_range(const Line_arc_2<CK> &A, const Circular_arc_point_2<CK> &p) 00162 { 00163 return CK().in_x_range_2_object()(A, p); 00164 } 00165 00166 template < class CK > 00167 CGAL::Comparison_result 00168 compare_y_at_x(const Circular_arc_point_2<CK> &p, const Line_arc_2<CK> &a) 00169 { 00170 return CK().compare_y_at_x_2_object()(p, a); 00171 } 00172 00173 // Not Documented 00174 template < class CK, class OutputIterator > 00175 OutputIterator 00176 make_x_monotone(const Line_arc_2<CK> &A, OutputIterator it) 00177 { 00178 return CK().make_x_monotone_2_object()(A, it); 00179 } 00180 00181 template < class CK, class OutputIterator > 00182 OutputIterator 00183 make_xy_monotone(const Line_arc_2<CK> &A, OutputIterator it) 00184 { 00185 return CK().make_xy_monotone_2_object()(A, it); 00186 } 00187 00188 CGAL_END_NAMESPACE 00189 00190 #endif // CGAL_CIRCULAR_KERNEL_GLOBAL_FUNCTIONS_CIRCULAR_KERNEL_2_H