BWAPI
SPAR/AIModule/BWTA/vendors/CGAL/CGAL/global_functions_circular_kernel_2.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines