📄 function_objects_polynomial_circular.h
字号:
typedef typename CK::Line_arc_2 Line_arc_2; public: typedef void result_type; //!!! typedef Arity_tag<2> Arity; template < class OutputIterator > OutputIterator operator()(const Circular_arc_2 &A, OutputIterator res) const { return CircularFunctors::make_x_monotone<CK> (A, res); } template < class OutputIterator > OutputIterator operator()(const Line_arc_2 &A, OutputIterator res) const { return CircularFunctors::make_x_monotone<CK>(A,res); } }; template < class CK > class Make_xy_monotone_2 { typedef typename CK::Circular_arc_2 Circular_arc_2; typedef typename CK::Line_arc_2 Line_arc_2; public: typedef void result_type; //!!! typedef Arity_tag<2> Arity; template < class OutputIterator > OutputIterator operator()(const Circular_arc_2 &A, OutputIterator res) const { typedef std::pair<bool, bool> relat_pos; typedef std::pair< CGAL::Object, relat_pos> Obj_descr_2; std::vector<Obj_descr_2> vec; CircularFunctors::advanced_make_xy_monotone<CK> (A, std::back_inserter(vec)); for(int i=0;i<vec.size();++i) *res++=vec.at(i).first; return res; } template < class OutputIterator > OutputIterator operator()(const Line_arc_2 &A, OutputIterator res) const { *res++ = make_object(A); return res; } }; template < class CK > class Advanced_make_x_monotone_2 { typedef typename CK::Circular_arc_2 Circular_arc_2; typedef typename CK::Line_arc_2 Line_arc_2; public: typedef void result_type; //!!! typedef Arity_tag<2> Arity; template < class OutputIterator > OutputIterator operator()(const Circular_arc_2 &A, OutputIterator res) const { return CircularFunctors::advanced_make_x_monotone<CK> (A, res);} // No extra information is meant to be returned for line arcs (should it?) // So attention on the fact that the second part of the pair contains dummy // info. Maybe there shouldn't be such an operator for line arcs after all template < class OutputIterator > OutputIterator operator()(const Line_arc_2 &A, OutputIterator res) const { *res++ = std::make_pair(make_object(A),false); // return res; } };template < class CK > class Advanced_make_xy_monotone_2 { typedef typename CK::Circular_arc_2 Circular_arc_2; typedef typename CK::Line_arc_2 Line_arc_2; public: typedef void result_type; //!!! typedef Arity_tag<2> Arity; template < class OutputIterator > OutputIterator operator()(const Circular_arc_2 &A, OutputIterator res) const { return CircularFunctors::advanced_make_xy_monotone<CK> (A, res);} // No extra information is meant to be returned for line arcs (should it?) // So attention on the fact that the second part of the pair contains dummy // info. Maybe there shouldn't be such an operator for line arcs after all template < class OutputIterator > OutputIterator operator()(const Line_arc_2 &A, OutputIterator res) const { *res++ = std::make_pair(make_object(A),std::make_pair(false,false)); return res; } }; template < class CK > class Intersect_2 : public CK::Linear_kernel::Intersect_2 { typedef typename CK::Circle_2 Circle; typedef typename CK::Circular_arc_2 Circular_arc; typedef typename CK::Line_arc_2 Line_arc; public: typedef void result_type; typedef Arity_tag<3> Arity; using CK::Linear_kernel::Intersect_2::operator(); template < class OutputIterator > OutputIterator operator()(const Circle & c1, const Circle & c2, OutputIterator res) const { return CircularFunctors::intersect_2<CK> (c1,c2,res); } template < class OutputIterator > OutputIterator operator()(const Circular_arc & c1, const Circular_arc & c2, OutputIterator res) const { return CircularFunctors::intersect_2<CK> (c1,c2,res); } template < class OutputIterator > OutputIterator operator()(const Line_arc & c1, const Line_arc & c2, OutputIterator res) const { return CircularFunctors::intersect_2<CK> (c1,c2,res); } template < class OutputIterator > OutputIterator operator()(const Line_arc & c1, const Circle & c2, OutputIterator res) const { return CircularFunctors::intersect_2<CK> (c1,c2,res); } template < class OutputIterator > OutputIterator operator()(const Circle & c1, const Line_arc & c2, OutputIterator res) const { return CircularFunctors::intersect_2<CK> (c2,c1,res); } template < class OutputIterator > OutputIterator operator()(const Line_arc & c1, const Circular_arc & c2, OutputIterator res) const { return CircularFunctors::intersect_2<CK> (c1,c2,res); } template < class OutputIterator > OutputIterator operator()(const Circular_arc & c1, const Line_arc & c2, OutputIterator res) const { return CircularFunctors::intersect_2<CK> (c2,c1,res); } }; template < class CK > class Split_2 { typedef typename CK::Circular_arc_2 Circular_arc_2; typedef typename CK::Circular_arc_point_2 Circular_arc_point_2; typedef typename CK::Line_arc_2 Line_arc_2; public: typedef void result_type; typedef Arity_tag<4> Arity; result_type operator()(const Circular_arc_2 &A, const Circular_arc_point_2 &p, Circular_arc_2 &ca1, Circular_arc_2 &ca2) const { return CircularFunctors::split<CK>(A, p, ca1, ca2); } result_type operator()(const Line_arc_2 &A, const Circular_arc_point_2 &p, Line_arc_2 &ca1, Line_arc_2 &ca2) const { return CircularFunctors::split<CK>(A, p, ca1, ca2); } }; template < class CK > class Is_vertical_2#ifndef CGAL_CFG_MATCHING_BUG_6 : public CK::Linear_kernel::Is_vertical_2#endif { typedef typename CK::Linear_kernel LK; typedef typename LK::Is_vertical_2 LK_Is_vertical_2; typedef typename CK::Circular_arc_2 Circular_arc_2; typedef typename CK::Line_arc_2 Line_arc_2; typedef typename LK::Line_2 Line_2; typedef typename LK::Segment_2 Segment_2; typedef typename LK::Ray_2 Ray_2; public: typedef bool result_type; typedef Arity_tag<1> Arity; #ifndef CGAL_CFG_MATCHING_BUG_6 using CK::Linear_kernel::Is_vertical_2::operator();#else result_type operator()( const Line_2& l) const { return LK_Is_vertical_2()(l); } result_type operator()( const Segment_2& s) const { return LK_Is_vertical_2()(s); } result_type operator()( const Ray_2& r) const { return LK_Is_vertical_2()(r); }#endif result_type operator()(const Circular_arc_2 &A) const { return CircularFunctors::is_vertical<CK>(A); } result_type operator()(const Line_arc_2 &A) const { return CircularFunctors::is_vertical<CK>(A); } }; template < class CK > class Construct_circular_arc_2 { typedef typename CK::FT FT; typedef typename CK::RT RT; typedef typename CK::Point_2 Point_2; typedef typename CK::Line_2 Line_2; typedef typename CK::Circle_2 Circle_2; typedef typename CK::Circular_arc_2 Circular_arc_2; typedef typename CK::Kernel_base::Circular_arc_2 RCircular_arc_2; typedef typename Circular_arc_2::Rep Rep; typedef typename CK::Circular_arc_point_2 Circular_arc_point_2; public: typedef Circular_arc_2 result_type; typedef Arity_tag<3> Arity; result_type operator()(void) { return Rep(); } result_type operator()(const Circle_2 &c) const { return Rep(c); } result_type operator()(const Circle_2 &support, const Circular_arc_point_2 &source, const Circular_arc_point_2 &target) const { return Rep(support,source,target); } result_type operator()(const Circle_2 &support, const Line_2 &l1, bool b1, const Line_2 &l2, bool b2) const { return Rep(support,l1,b1,l2,b2); } result_type operator()(const Circle_2 &c, const Circle_2 &c1, bool b_1, const Circle_2 &c2, bool b_2) const { return Rep(c,c1,b_1,c2,b_2); } result_type operator()(const Circular_arc_2 &A, bool b, const Circle_2 &ccut, bool b_cut) const { return Rep(A,b,ccut,b_cut); } result_type operator()(const Point_2 &begin, const Point_2 &middle, const Point_2 &end) const { return Rep(begin,middle,end); } result_type operator()(const Point_2 &begin, const Point_2 &end, const FT& bulge) const { return Rep(begin,end,bulge); } }; template < class CK > class Construct_line_arc_2 { typedef typename CK::Point_2 Point_2; typedef typename CK::Line_2 Line_2; typedef typename CK::Circle_2 Circle_2; typedef typename CK::Circular_arc_point_2 Circular_arc_point_2; typedef typename CK::Segment_2 Segment_2; typedef typename CK::Line_arc_2 Line_arc_2; typedef typename CK::Kernel_base::Line_arc_2 RLine_arc_2; typedef typename Line_arc_2::Rep Rep; public: typedef Line_arc_2 result_type; typedef Arity_tag<3> Arity; result_type operator()(void) { return Rep(); } result_type operator()(const Line_2 &support, const Circle_2 &c1,const bool b1, const Circle_2 &c2,const bool b2) const { return Rep(support,c1,b1,c2,b2); } result_type operator()(const Line_2 &support, const Line_2 &l1, const Line_2 &l2) const { return Rep(support,l1,l2); } result_type operator()(const Line_2 &support, const Circular_arc_point_2 &p1, const Circular_arc_point_2 &p2) const { return Rep(support,p1,p2); }// result_type// operator()(const Line_2 &support,// const Point_2 &p1,// const Point_2 &p2) const// { return Rep(support,p1,p2); } result_type operator()(const Segment_2 &s) const { return Rep(s); } result_type operator()(const Point_2 &p1, const Point_2 &p2) const { return Rep(p1,p2); } }; template < class CK > class Construct_circular_arc_point_2 { typedef typename CK::Point_2 Point_2; typedef typename CK::Circular_arc_point_2 Circular_arc_point_2; typedef typename CK::Kernel_base::Circular_arc_point_2 RCircular_arc_point_2; typedef typename Circular_arc_point_2::Rep Rep; typedef typename Circular_arc_point_2::Root_for_circles_2_2 Root_for_circles_2_2; public: typedef Circular_arc_point_2 result_type; typedef Arity_tag<1> Arity; result_type operator()(void) { return Rep(); } result_type operator()(const Root_for_circles_2_2 & np) const { return Rep(np); } result_type operator()(const Point_2 & p) const { return Rep(p); } }; template <class CK> class Compute_Circular_x_2: Has_qrt { typedef typename CK::Circular_arc_point_2 Circular_arc_point_2; typedef typename CK::Root_of_2 Root_of_2; public: typedef Root_of_2 result_type; typedef const result_type & qualified_result_type; typedef Arity_tag<1> Arity; qualified_result_type operator() (const Circular_arc_point_2 & a) const { return (a.rep().x()); } }; template <class CK> class Compute_Circular_y_2: Has_qrt { typedef typename CK::Circular_arc_point_2 Circular_arc_point_2; typedef typename CK::Root_of_2 Root_of_2; public: typedef Root_of_2 result_type; typedef const result_type & qualified_result_type; typedef Arity_tag<1> Arity; qualified_result_type operator() (const Circular_arc_point_2 & a) const { return (a.rep().y()); } }; template <class CK> class Construct_circular_min_vertex_2 : Has_qrt { typedef typename CK::Circular_arc_2 Circular_arc_2; typedef typename CK::Line_arc_2 Line_arc_2; typedef typename CK::Circular_arc_point_2 Circular_arc_point_2; public: typedef Circular_arc_point_2 result_type; typedef const result_type & qualified_result_type; typedef Arity_tag<1> Arity; qualified_result_type operator() (const Circular_arc_2 & a) const {// if (a.rep().Cache_minmax == 't')// return (a.rep().source());// if (a.rep().Cache_minmax == 's')// return (a.rep().target());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -