mirror of https://github.com/CGAL/cgal
266 lines
8.4 KiB
C++
266 lines
8.4 KiB
C++
// Copyright (c) 2003 INRIA Sophia-Antipolis (France) and
|
|
// Max-Planck-Institute Saarbruecken (Germany).
|
|
// All rights reserved.
|
|
//
|
|
// Authors : Monique Teillaud <Monique.Teillaud@sophia.inria.fr>
|
|
// Sylvain Pion <Sylvain.Pion@sophia.inria.fr>
|
|
//
|
|
// Partially supported by the IST Programme of the EU as a Shared-cost
|
|
// RTD (FET Open) Project under Contract No IST-2000-26473
|
|
// (CGAL - Effective Computational Geometry for Curves and Surfaces)
|
|
|
|
// file : include/CGAL/Circular_kernel.h
|
|
|
|
#ifndef CGAL_CIRCULAR_KERNEL_H
|
|
#define CGAL_CIRCULAR_KERNEL_H
|
|
|
|
#include <CGAL/Curved_kernel/Circular_arc_endpoint_2.h>
|
|
#include <CGAL/Curved_kernel/Circular_arc_2.h>
|
|
#include <CGAL/Curved_kernel/Line_arc_2.h>
|
|
#include <CGAL/Circular_arc_2.h>
|
|
#include <CGAL/Circular_arc_endpoint_2.h>
|
|
#include <CGAL/Line_arc_2.h>
|
|
|
|
#include <CGAL/Curved_kernel/function_objects_on_circle_2.h>
|
|
#include <CGAL/global_functions_on_circle_2.h>
|
|
|
|
#include <CGAL/Curved_kernel/function_objects_polynomial_circular.h>
|
|
#include <CGAL/global_functions_on_circular_arcs_2.h>
|
|
|
|
namespace CGAL {
|
|
namespace CGALi {
|
|
|
|
template < class CurvedKernel >
|
|
struct Curved_kernel_base
|
|
// takes classes in internal sub-namespace
|
|
{
|
|
typedef CGALi::Circular_arc_2<CurvedKernel> Circular_arc_2;
|
|
typedef CGALi::Circular_arc_point_2<CurvedKernel> Circular_arc_point_2;
|
|
typedef CGALi::Line_arc_2<CurvedKernel> Line_arc_2;
|
|
};
|
|
|
|
} // namespace CGALi
|
|
|
|
template < class LinearKernel, class AlgebraicKernel >
|
|
struct Curved_kernel
|
|
: public LinearKernel,
|
|
// there should be a derivation from
|
|
// LinearKernel::Kernel_base<Self> to have types equalities for
|
|
// the Linearkernel types
|
|
public CGALi::Curved_kernel_base<Curved_kernel<LinearKernel,AlgebraicKernel> >
|
|
{
|
|
typedef LinearKernel Linear_kernel;
|
|
typedef AlgebraicKernel Algebraic_kernel;
|
|
|
|
typedef Curved_kernel<LinearKernel,AlgebraicKernel> Self;
|
|
typedef CGALi::Curved_kernel_base<Self> Kernel_base;
|
|
|
|
typedef typename LinearKernel::RT RT;
|
|
typedef typename LinearKernel::FT FT;
|
|
|
|
typedef typename Algebraic_kernel::Root_of_2 Root_of_2;
|
|
typedef typename Algebraic_kernel::Root_for_circles_2_2 Root_for_circles_2_2;
|
|
typedef typename Algebraic_kernel::Polynomial_for_circles_2_2
|
|
Polynomial_for_circles_2_2;
|
|
typedef typename Algebraic_kernel::Polynomial_1_2
|
|
Polynomial_1_2;
|
|
|
|
// public classes
|
|
|
|
typedef typename Linear_kernel::Line_2 Line_2;
|
|
typedef typename Linear_kernel::Circle_2 Circle_2;
|
|
typedef typename Linear_kernel::Conic_2 Conic_2;
|
|
typedef typename Linear_kernel::Point_2 Point_2;
|
|
|
|
typedef CGAL::Circular_arc_2<Self> Circular_arc_2;
|
|
typedef CGAL::Circular_arc_point_2<Self> Circular_arc_point_2;
|
|
typedef CGAL::Line_arc_2<Self> Line_arc_2;
|
|
|
|
typedef CircularFunctors::Construct_circle_2<Self> Construct_circle_2;
|
|
typedef CircularFunctors::Get_equation<Self> Get_equation;
|
|
|
|
// Function objects
|
|
typedef CircularFunctors::Compare_x_2<Self>
|
|
Compare_x_2;
|
|
typedef CircularFunctors::Compare_y_2<Self>
|
|
Compare_y_2;
|
|
typedef CircularFunctors::Compare_xy_2<Self>
|
|
Compare_xy_2;
|
|
typedef CircularFunctors::Compare_y_at_x_2<Self>
|
|
Compare_y_at_x_2;
|
|
typedef CircularFunctors::Compare_y_to_right_2<Self>
|
|
Compare_y_to_right_2;
|
|
typedef CircularFunctors::Do_overlap_2<Self>
|
|
Do_overlap_2;
|
|
typedef CircularFunctors::Equal_2<Self>
|
|
Equal_2;
|
|
typedef CircularFunctors::In_range_2<Self>
|
|
In_range_2;
|
|
typedef CircularFunctors::Make_x_monotone_2<Self>
|
|
Make_x_monotone_2;
|
|
typedef CircularFunctors::Intersect_2<Self>
|
|
Intersect_2;
|
|
typedef CircularFunctors::Split_2<Self>
|
|
Split_2;
|
|
typedef CircularFunctors::Is_vertical_2<Self>
|
|
Is_vertical_2;
|
|
typedef CircularFunctors::Construct_circular_arc_2<Self>
|
|
Construct_circular_arc_2;
|
|
typedef CircularFunctors::Construct_line_arc_2<Self>
|
|
Construct_line_arc_2;
|
|
typedef CircularFunctors::Construct_circular_arc_point_2<Self>
|
|
Construct_circular_arc_point_2;
|
|
typedef CircularFunctors::Compute_x_2<Self>
|
|
Compute_x_2;
|
|
typedef CircularFunctors::Compute_y_2<Self>
|
|
Compute_y_2;
|
|
typedef CircularFunctors::Construct_min_vertex_2<Self>
|
|
Construct_min_vertex_2;
|
|
typedef CircularFunctors::Construct_max_vertex_2<Self>
|
|
Construct_max_vertex_2;
|
|
typedef CircularFunctors::Construct_source_vertex_2<Self>
|
|
Construct_source_vertex_2;
|
|
typedef CircularFunctors::Construct_target_vertex_2<Self>
|
|
Construct_target_vertex_2;
|
|
typedef CircularFunctors::Is_x_monotone_2<Self>
|
|
Is_x_monotone_2;
|
|
typedef CircularFunctors::Is_y_monotone_2<Self>
|
|
Is_y_monotone_2;
|
|
typedef CircularFunctors::Construct_supporting_circle_2<Self>
|
|
Construct_supporting_circle_2;
|
|
typedef CircularFunctors::Construct_supporting_line_2<Self>
|
|
Construct_supporting_line_2;
|
|
typedef CircularFunctors::Construct_bbox_2<Self>
|
|
Construct_bbox_2;
|
|
|
|
|
|
|
|
// Construct_min_vertex_2 and Construct_max_vertex_2 should be added
|
|
|
|
Get_equation
|
|
get_equation_object() const
|
|
{ return Get_equation(); }
|
|
|
|
Construct_circle_2
|
|
construct_circle_2_object() const
|
|
{ return Construct_circle_2(); }
|
|
|
|
Compare_x_2
|
|
compare_x_2_object() const
|
|
{ return Compare_x_2(); }
|
|
|
|
Compare_y_2
|
|
compare_y_2_object() const
|
|
{ return Compare_y_2(); }
|
|
|
|
Compare_xy_2
|
|
compare_xy_2_object() const
|
|
{ return Compare_xy_2(); }
|
|
|
|
Compare_y_at_x_2
|
|
compare_y_at_x_2_object() const
|
|
{ return Compare_y_at_x_2(); }
|
|
|
|
Compare_y_to_right_2
|
|
compare_y_to_right_2_object() const
|
|
{ return Compare_y_to_right_2(); }
|
|
|
|
Do_overlap_2
|
|
do_overlap_2_object() const
|
|
{ return Do_overlap_2(); }
|
|
|
|
Equal_2
|
|
equal_2_object() const
|
|
{ return Equal_2(); }
|
|
|
|
In_range_2
|
|
in_range_2_object() const
|
|
{ return In_range_2(); }
|
|
|
|
Make_x_monotone_2
|
|
make_x_monotone_2_object() const
|
|
{ return Make_x_monotone_2(); }
|
|
|
|
Intersect_2
|
|
intersect_2_object() const
|
|
{ return Intersect_2(); }
|
|
|
|
|
|
Split_2
|
|
split_2_object() const
|
|
{ return Split_2(); }
|
|
|
|
Is_vertical_2
|
|
is_vertical_2_object() const
|
|
{ return Is_vertical_2(); }
|
|
|
|
Construct_circular_arc_2
|
|
construct_circular_arc_2_object() const
|
|
{ return Construct_circular_arc_2(); }
|
|
|
|
|
|
Construct_line_arc_2
|
|
construct_line_arc_2_object() const
|
|
{ return Construct_line_arc_2 (); }
|
|
|
|
Construct_circular_arc_point_2
|
|
construct_circular_arc_point_2_object() const
|
|
{ return Construct_circular_arc_point_2(); }
|
|
|
|
|
|
Compute_x_2
|
|
compute_x_2_object() const
|
|
{ return Compute_x_2(); }
|
|
|
|
Compute_y_2
|
|
compute_y_2_object() const
|
|
{ return Compute_y_2(); }
|
|
|
|
Construct_min_vertex_2
|
|
construct_min_vertex_2_object() const
|
|
{ return Construct_min_vertex_2(); }
|
|
|
|
Construct_max_vertex_2
|
|
construct_max_vertex_2_object() const
|
|
{ return Construct_max_vertex_2(); }
|
|
|
|
Construct_source_vertex_2
|
|
construct_source_vertex_2_object() const
|
|
{ return Construct_source_vertex_2(); }
|
|
|
|
Construct_target_vertex_2
|
|
construct_target_vertex_2_object() const
|
|
{ return Construct_target_vertex_2(); }
|
|
|
|
Is_x_monotone_2
|
|
is_x_monotone_2_object() const
|
|
{ return Is_x_monotone_2(); }
|
|
|
|
Is_y_monotone_2
|
|
is_y_monotone_2_object() const
|
|
{ return Is_y_monotone_2(); }
|
|
|
|
Construct_supporting_circle_2
|
|
construct_supporting_circle_2_object() const
|
|
{ return Construct_supporting_circle_2(); }
|
|
|
|
Construct_supporting_line_2
|
|
construct_supporting_line_2_object() const
|
|
{ return Construct_supporting_line_2(); }
|
|
|
|
Construct_bbox_2
|
|
construct_bbox_2_object() const
|
|
{ return Construct_bbox_2(); }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
} // namespace CGAL
|
|
|
|
#endif // CGAL_CURVED_KERNEL_H
|