cgal/Circular_kernel_2/doc/Circular_kernel_2/Concepts/CircularKernel.h

296 lines
5.7 KiB
C++

/*!
\ingroup PkgCircularKernel2GeometricConcepts
\cgalConcept
\cgalRefines `Kernel`
\cgalHasModel `CGAL::Circular_kernel_2<Kernel,AlgebraicKernelForCircles>`
\cgalHasModel `CGAL::Exact_circular_kernel_2`
\sa `Kernel`
*/
class CircularKernel {
public:
/// \name Types
/// A model of `CircularKernel` is supposed to provide some basic
/// types and to define the following geometric objects Moreover, a
/// model of `CircularKernel` must provide predicates, constructions
/// and other functionalities.
/// @{
/*!
Model of `LinearKernel`.
*/
typedef unspecified_type Linear_kernel;
/*!
Model of `AlgebraicKernelForCircles`.
*/
typedef unspecified_type Algebraic_kernel;
/*!
Model of `RingNumberType`.
*/
typedef unspecified_type RT;
/*!
Model of `FieldNumberType`.
*/
typedef unspecified_type FT;
/*!
Model of `RootOf_2`.
*/
typedef unspecified_type Root_of_2;
/*!
Model of `AlgebraicKernelForCircles::RootForCircles_2_2`.
*/
typedef unspecified_type Root_for_circles_2_2;
/*!
Model of `AlgebraicKernelForCircles::Polynomial_1_2`.
*/
typedef unspecified_type Polynomial_1_2;
/*!
Model of `AlgebraicKernelForCircles::PolynomialForCircles_2_2`.
*/
typedef unspecified_type Polynomial_for_circles_2_2;
/*!
Model of `Kernel::Point_2`.
*/
typedef unspecified_type Point_2;
/*!
Model of `Kernel::Line_2`.
*/
typedef unspecified_type Line_2;
/*!
Model of `Kernel::Circle_2`.
*/
typedef unspecified_type Circle_2;
/*!
Model of `CircularKernel::LineArc_2`.
*/
typedef unspecified_type Line_arc_2;
/*!
Model of `CircularKernel::CircularArc_2`.
*/
typedef unspecified_type Circular_arc_2;
/*!
Model of `CircularKernel::CircularArcPoint_2`.
*/
typedef unspecified_type Circular_arc_point_2;
/// @}
/// \name Predicates
/// @{
/*!
Model of `CircularKernel::CompareX_2`.
*/
typedef unspecified_type Compare_x_2;
/*!
Model of `CircularKernel::CompareY_2`.
*/
typedef unspecified_type Compare_y_2;
/*!
Model of `CircularKernel::CompareXY_2`.
*/
typedef unspecified_type Compare_xy_2;
/*!
Model of `CircularKernel::Equal_2`.
*/
typedef unspecified_type Equal_2;
/*!
Model of `CircularKernel::CompareYatX_2`.
*/
typedef unspecified_type Compare_y_at_x_2;
/*!
Model of `CircularKernel::CompareYtoRight_2`.
*/
typedef unspecified_type Compare_y_to_right_2;
/*!
Model of `CircularKernel::HasOn_2`.
*/
typedef unspecified_type Has_on_2;
/*!
Model of `CircularKernel::DoOverlap_2`.
*/
typedef unspecified_type Do_overlap_2;
/*!
Model of `CircularKernel::DoIntersect_2`.
*/
typedef unspecified_type Do_intersect_2;
/*!
Model of `CircularKernel::BoundedSide_2`.
*/
typedef unspecified_type Bounded_side_2;
/*!
Model of `CircularKernel::HasOnBoundedSide_2`.
*/
typedef unspecified_type Has_on_bounded_side_2;
/*!
Model of `CircularKernel::HasOnUnboundedSide_2`.
*/
typedef unspecified_type Has_on_unbounded_side_2;
/*!
Model of `CircularKernel::InXRange_2`.
*/
typedef unspecified_type In_x_range_2;
/*!
Model of `CircularKernel::IsVertical_2`.
*/
typedef unspecified_type Is_vertical_2;
/*!
Model of `CircularKernel::IsXMonotone_2`.
*/
typedef unspecified_type Is_x_monotone_2;
/*!
Model of `CircularKernel::IsYMonotone_2`.
*/
typedef unspecified_type Is_y_monotone_2;
/// @}
/// \name Constructions
/// @{
/*!
Model of `CircularKernel::ConstructLine_2`.
*/
typedef unspecified_type Construct_line_2;
/*!
Model of `CircularKernel::ConstructCircle_2`.
*/
typedef unspecified_type Construct_circle_2;
/*!
Model of `CircularKernel::ConstructBbox_2`.
*/
typedef unspecified_type Construct_bbox_2;
/*!
Model of `CircularKernel::ConstructCircularArcPoint_2`.
*/
typedef unspecified_type Construct_circular_arc_point_2;
/*!
Model of `CircularKernel::ConstructLineArc_2`.
*/
typedef unspecified_type Construct_line_arc_2;
/*!
Model of `CircularKernel::ConstructCircularArc_2`.
*/
typedef unspecified_type Construct_circular_arc_2;
/*!
Model of `CircularKernel::ComputeCircularX_2`
*/
typedef unspecified_type Compute_circular_x_2;
/*!
Model of `CircularKernel::ComputeCircularY_2`
*/
typedef unspecified_type Compute_circular_y_2;
/*!
Model of `CircularKernel::ConstructCircularMinVertex_2`.
*/
typedef unspecified_type Construct_circular_min_vertex_2;
/*!
Model of `CircularKernel::ConstructCircularMaxVertex_2`.
*/
typedef unspecified_type Construct_circular_max_vertex_2;
/*!
Model of `CircularKernel::ConstructCircularSourceVertex_2`.
*/
typedef unspecified_type Construct_circular_source_vertex_2;
/*!
Model of `CircularKernel::ConstructCircularTargetVertex_2`.
*/
typedef unspecified_type Construct_circular_target_vertex_2;
/*!
Model of `CircularKernel::Intersect_2`.
*/
typedef unspecified_type Intersect_2;
/*!
Model of `CircularKernel::Split_2`.
*/
typedef unspecified_type Split_2;
/*!
Model of `CircularKernel::MakeXMonotone_2`.
*/
typedef unspecified_type Make_x_monotone_2;
/*!
Model of `CircularKernel::MakeXYMonotone_2`.
*/
typedef unspecified_type Make_xy_monotone_2;
/// @}
/// \name Link with the algebraic kernel
/// @{
/*!
Model of `CircularKernel::GetEquation`.
*/
typedef unspecified_type Get_equation;
/// @}
/// \name Operations
/// As in the `Kernel` concept, for each of the function objects
/// above, there must exist a member function that requires no
/// arguments and returns an instance of that function object. The
/// name of the member function is the uncapitalized name of the type
/// returned with the suffix `_object` appended. For example, for the
/// function object `CircularKernel::Construct_circular_arc_2` the
/// following member function must exist:
/// @{
/*!
*/
Construct_circular_arc_2 construct_circular_arc_2_object() const;
/// @}
}; /* end CircularKernel */