\begin{ccRefConcept}{Kernel}
The concept of a {\em kernel} is defined by a set of requirements on
the provision of certain types and access member functions to create
objects of these types. The types are function object classes to be used
within the algorithms and data structures of \cgal.
This allows you to use any model of a kernel as a traits class in
the \cgal\ algorithms and data structures, unless they require types
beyond those provided by a kernel.

%A kernel subsumes the concepts of {\em two-dimensional kernel},
%{\em three-dimensional kernel}, and {\em $d$-dimensional kernel}.

A kernel provides types, construction objects, and generalized predicates.
The former replace constructors of the kernel classes and constructive
procedures in the kernel. There are also function objects replacing operators,
especially for equality testing.

\ccHasModels

\ccRefIdfierPage{CGAL::Cartesian<FieldNumberType>} \\
\ccRefIdfierPage{CGAL::Homogeneous<RingNumberType>} \\
\ccRefIdfierPage{CGAL::Simple_cartesian<FieldNumberType>} \\
\ccRefIdfierPage{CGAL::Simple_homogeneous<RingNumberType>} \\

\ccCreationVariable{kernel}

\ccTypes

\ccNestedType{FT}{a model of \ccc{FieldNumberType}}
\ccGlue
\ccNestedType{RT}{a model of \ccc{RingNumberType}}

The following types describe the return types of predicates.  They typically
map to \ccc{bool} and CGAL kernel enum types, except when an interval arithmetic
number type is used such as within the filtering kernels, in which case it is
\ccc{Uncertain<bool>} or similar.

\ccNestedType{Boolean}{\ccc{bool} or \ccc{Uncertain<bool>}}
\ccGlue
\ccNestedType{Sign}{\ccc{CGAL::Sign} or \ccc{Uncertain<CGAL::Sign>}}
\ccGlue
\ccNestedType{Comparison_result}{\ccc{CGAL::Comparison_result} or \ccc{Uncertain<CGAL::Comparison_result>}}
\ccGlue
\ccNestedType{Orientation}{\ccc{CGAL::Orientation} or \ccc{Uncertain<CGAL::Orientation>}}
\ccGlue
\ccNestedType{Oriented_side}{\ccc{CGAL::Oriented_side} or \ccc{Uncertain<CGAL::Oriented_side>}}
\ccGlue
\ccNestedType{Bounded_side}{\ccc{CGAL::Bounded_side} or \ccc{Uncertain<CGAL::Bounded_side>}}
\ccGlue
\ccNestedType{Angle}{\ccc{CGAL::Angle} or \ccc{Uncertain<CGAL::Angle>}}


\ccHeading{Two-dimensional Kernel}

\ccHeading{Coordinate Access}

\ccNestedType{Cartesian_const_iterator_2}{a model of \ccc{Kernel::CartesianConstIterator_2}}


\ccHeading{Geometric Objects}

\ccNestedType{Point_2}{a model of \ccc{Kernel::Point_2}}
\ccGlue
\ccNestedType{Vector_2}{a model of \ccc{Kernel::Vector_2}}
\ccGlue
\ccNestedType{Direction_2}{a model of \ccc{Kernel::Direction_2}}
\ccGlue
\ccNestedType{Line_2}{a model of \ccc{Kernel::Line_2}}
\ccGlue
\ccNestedType{Ray_2}{a model of \ccc{Kernel::Ray_2}}
\ccGlue
\ccNestedType{Segment_2}{a model of \ccc{Kernel::Segment_2}}
\ccGlue
\ccNestedType{Triangle_2}{a model of \ccc{Kernel::Triangle_2}}
\ccGlue
\ccNestedType{Iso_rectangle_2}{a model of \ccc{Kernel::IsoRectangle_2}}
%%\ccGlue
%%\ccNestedType{Aff_transformation_2}{}
\ccGlue
\ccNestedType{Circle_2}{a model of \ccc{Kernel::Circle_2}}
\ccGlue
%\ccNestedType{Weighted_point_2}{a model of Kernel::WeightedPoint\_2}
%\ccGlue
\ccNestedType{Object_2}{a model of \ccc{Kernel::Object_2}}

\ccHeading{Constructions}

\ccNestedType{Construct_point_2}{a model of \ccc{Kernel::ConstructPoint_2}}
\ccGlue
\ccNestedType{Construct_vector_2}{a model of \ccc{Kernel::ConstructVector_2}}
\ccGlue
\ccNestedType{Construct_direction_2}{a model of \ccc{Kernel::ConstructDirection_2}}
\ccGlue
\ccNestedType{Construct_segment_2}{a model of \ccc{Kernel::ConstructSegment_2}}
\ccGlue
\ccNestedType{Construct_line_2}{a model of \ccc{Kernel::ConstructLine_2}}
\ccGlue
\ccNestedType{Construct_ray_2}{a model of \ccc{Kernel::ConstructRay_2}}
\ccGlue
\ccNestedType{Construct_circle_2}{a model of \ccc{Kernel::ConstructCircle_2}}
\ccGlue
\ccNestedType{Construct_triangle_2}{a model of \ccc{Kernel::ConstructTriangle_2}}
\ccGlue
\ccNestedType{Construct_iso_rectangle_2}{a model of \ccc{Kernel::ConstructIsoRectangle_2}}
\ccGlue
\ccNestedType{Construct_object_2}{a model of \ccc{Kernel::ConstructObject_2}}
%%\ccGlue
%%\ccNestedType{Construct_aff_transformation_2}{}
\ccGlue
\ccNestedType{Construct_scaled_vector_2}{a model of \ccc{Kernel::ConstructScaledVector_2}}
\ccGlue
\ccNestedType{Construct_translated_point_2}{a model of \ccc{Kernel::ConstructTranslatedPoint_2}}
\ccGlue
\ccNestedType{Construct_point_on_2}{a model of \ccc{Kernel::ConstructPointOn_2}}
\ccGlue
\ccNestedType{Construct_projected_point_2}{a model of \ccc{Kernel::ConstructProjectedPoint_2}}
\ccGlue
\ccNestedType{Construct_projected_xy_point_2}{a model of \ccc{Kernel::ConstructProjectedXYPoint_2}}
%%\ccGlue
%%\ccNestedType{Construct_second_point_on_2}{}
%%\ccGlue
%%\ccNestedType{Construct_source_point_2}{}
%%\ccGlue
%%\ccNestedType{Construct_target_point_2}{}
%%\ccGlue
%%\ccNestedType{Construct_min_point_2}{}
%%\ccGlue
%%\ccNestedType{Construct_max_point_2}{}
\ccGlue
\ccNestedType{Construct_cartesian_const_iterator_2}{a model of \ccc{Kernel::ConstructCartesianConstIterator_2}}
\ccGlue
\ccNestedType{Construct_vertex_2}{a model of \ccc{Kernel::ConstructVertex_2}}
\ccGlue
\ccNestedType{Construct_bbox_2}{a model of \ccc{Kernel::ConstructBbox_2}}
%%\ccGlue
%%\ccNestedType{Construct_direction_of_line_2}{}
%%\ccGlue
%%\ccNestedType{Construct_direction_of_ray_2}{}
\ccGlue
\ccNestedType{Construct_perpendicular_vector_2}{a model of \ccc{Kernel::ConstructPerpendicularVector_2}}
\ccGlue
\ccNestedType{Construct_perpendicular_direction_2}{a model of \ccc{Kernel::ConstructPerpendicularDirection_2}}
\ccGlue
\ccNestedType{Construct_perpendicular_line_2}{a model of \ccc{Kernel::ConstructPerpendicularLine_2}}
\ccGlue
\ccNestedType{Construct_max_vertex_2}{a model of \ccc{Kernel::ConstructMaxVertex_2}}
\ccGlue
\ccNestedType{Construct_midpoint_2}{a model of \ccc{Kernel::ConstructMidpoint_2}}
\ccGlue
\ccNestedType{Construct_equidistant_line_3}{a model of \ccc{Kernel::ConstructEquidistantLine_3}}
\ccGlue
\ccNestedType{Construct_min_vertex_2}{a model of \ccc{Kernel::ConstructMinVertex_2}}
\ccGlue
\ccNestedType{Construct_center_2}{a model of \ccc{Kernel::ConstructCenter_2}}
\ccGlue
\ccNestedType{Construct_centroid_2}{a model of \ccc{Kernel::ConstructCentroid_2}}
\ccGlue
\ccNestedType{Construct_circumcenter_2}{a model of \ccc{Kernel::ConstructCircumcenter_2}}
\ccGlue
\ccNestedType{Construct_bisector_2}{a model of \ccc{Kernel::ConstructBisector_2}}
\ccGlue
\ccNestedType{Construct_opposite_direction_2}{a model of \ccc{Kernel::ConstructOppositeDirection_2}}
\ccGlue
\ccNestedType{Construct_opposite_segment_2}{a model of \ccc{Kernel::ConstructOppositeSegment_2}}
\ccGlue
\ccNestedType{Construct_opposite_ray_2}{a model of \ccc{Kernel::ConstructOppositeRay_2}}
\ccGlue
\ccNestedType{Construct_opposite_line_2}{a model of \ccc{Kernel::ConstructOppositeLine_2}}
\ccGlue
\ccNestedType{Construct_opposite_triangle_2}{a model of \ccc{Kernel::ConstructOppositeTriangle_2}}
\ccGlue
\ccNestedType{Construct_opposite_circle_2}{a model of \ccc{Kernel::ConstructOppositeCircle_2}}
\ccGlue
\ccNestedType{Construct_opposite_vector_2}{a model of \ccc{Kernel::ConstructOppositeVector_2}}

If the result type is not determined, there is no \ccc{Construct_} prefix:

%%\ccNestedType{Transform_2}{}
%%\ccGlue
\ccNestedType{Intersect_2}{a model of \ccc{Kernel::Intersect_2}}
\ccGlue
\ccNestedType{Assign_2}{a model of \ccc{Kernel::Assign_2}}

If the result type is a number type, the prefix is \ccc{Compute_}:

\ccNestedType{Compute_squared_distance_2}{a model of \ccc{Kernel::ComputeSquaredDistance_2}}
\ccGlue
\ccNestedType{Compute_squared_length_2}{a model of \ccc{Kernel::ComputeSquaredLength_2}}
\ccGlue
\ccNestedType{Compute_squared_radius_2}{a model of \ccc{Kernel::ComputeSquaredRadius_2}}
\ccGlue
\ccNestedType{Compute_area_2}{a model of \ccc{Kernel::ComputeArea_2}}

\ccHeading{Generalized Predicates}

\ccNestedType{Angle_2}{a model of \ccc{Kernel::Angle_2}}
\ccGlue
\ccNestedType{Equal_2}{a model of \ccc{Kernel::Equal_2}}
\ccGlue
\ccNestedType{Equal_x_2}{a model of \ccc{Kernel::EqualX_2}}
\ccGlue
\ccNestedType{Equal_y_2}{a model of \ccc{Kernel::EqualY_2}}
\ccGlue
\ccNestedType{Less_x_2}{a model of \ccc{Kernel::LessX_2}}
\ccGlue
\ccNestedType{Less_y_2}{a model of \ccc{Kernel::LessY_2}}
\ccGlue
\ccNestedType{Less_xy_2}{a model of \ccc{Kernel::LessXY_2}}
\ccGlue
\ccNestedType{Less_yx_2}{a model of \ccc{Kernel::LessYX_2}}
\ccGlue
\ccNestedType{Compare_x_2}{a model of \ccc{Kernel::CompareX_2}}
\ccGlue
\ccNestedType{Compare_x_at_y_2}{a model of \ccc{Kernel::CompareXAtY_2}}
\ccGlue
\ccNestedType{Compare_y_2}{a model of \ccc{Kernel::CompareY_2}}
\ccGlue
\ccNestedType{Compare_xy_2}{a model of \ccc{Kernel::CompareXY_2}}
\ccGlue
\ccNestedType{Compare_xy_2}{a model of \ccc{Kernel::CompareYX_2}}
\ccGlue
\ccNestedType{Compare_y_at_x_2}{a model of \ccc{Kernel::CompareYAtX_2}}
\ccGlue
\ccNestedType{Compare_distance_2}{a model of \ccc{Kernel::CompareDistance_2}}
\ccGlue
\ccNestedType{Compare_angle_with_x_axis_2}{a model of \ccc{Kernel::CompareAngleWithXAxis_2}}
\ccGlue
\ccNestedType{Compare_slope_2}{a model of \ccc{Kernel::CompareSlope_2}}
\ccGlue
\ccNestedType{Less_distance_to_point_2}{a model of \ccc{Kernel::LessDistanceToPoint_2}}
\ccGlue
\ccNestedType{Less_signed_distance_to_line_2}{a model of \ccc{Kernel::LessSignedDistanceToLine_2}}
\ccGlue
\ccNestedType{Less_rotate_ccw_2}{a model of \ccc{Kernel::LessRotateCCW_2}}
\ccGlue
\ccNestedType{Left_turn_2}{a model of \ccc{Kernel::LeftTurn_2}}
\ccGlue
\ccNestedType{Collinear_2}{a model of \ccc{Kernel::Collinear_2}}
\ccGlue
\ccNestedType{Orientation_2}{a model of \ccc{Kernel::Orientation_2}}
\ccGlue
\ccNestedType{Side_of_oriented_circle_2}{a model of \ccc{Kernel::SideOfOrientedCircle_2}}
\ccGlue
\ccNestedType{Side_of_bounded_circle_2}{a model of \ccc{Kernel::SideOfBoundedCircle_2}}
\ccGlue
\ccNestedType{Is_horizontal_2}{a model of \ccc{Kernel::IsHorizontal_2}}
\ccGlue
\ccNestedType{Is_vertical_2}{a model of \ccc{Kernel::IsVertical_2}}
\ccGlue
\ccNestedType{Is_degenerate_2}{a model of \ccc{Kernel::IsDegenerate_2}}
\ccGlue
\ccNestedType{Has_on_2}{a model of \ccc{Kernel::HasOn_2}}
\ccGlue
\ccNestedType{Collinear_has_on_2}{a model of \ccc{Kernel::CollinearHasOn_2}}
\ccGlue
\ccNestedType{Has_on_bounded_side_2}{a model of \ccc{Kernel::HasOnBoundedSide_2}}
\ccGlue
\ccNestedType{Has_on_unbounded_side_2}{a model of \ccc{Kernel::HasOnUnboundedSide_2}}
\ccGlue
\ccNestedType{Has_on_boundary_2}{a model of \ccc{Kernel::HasOnBoundary_2}}
\ccGlue
\ccNestedType{Has_on_positive_side_2}{a model of \ccc{Kernel::HasOnPositiveSide_2}}
\ccGlue
\ccNestedType{Has_on_negative_side_2}{a model of \ccc{Kernel::HasOnNegativeSide_2}}
\ccGlue
\ccNestedType{Oriented_side_2}{a model of \ccc{Kernel::OrientedSide_2}}
\ccGlue
\ccNestedType{Bounded_side_2}{a model of \ccc{Kernel::BoundedSide_2}}
\ccGlue
\ccNestedType{Are_parallel_2 }{a model of \ccc{Kernel::AreParallel_2}}
\ccGlue
\ccNestedType{Are_ordered_along_line_2 }{a model of \ccc{Kernel::AreOrderedAlongLine_2}}
\ccGlue
\ccNestedType{Are_strictly_ordered_along_line_2}{a model of \ccc{Kernel::AreStrictlyOrderedAlongLine_2}}
\ccGlue
\ccNestedType{Collinear_are_ordered_along_line_2}{a model of \ccc{Kernel::CollinearAreOrderedAlongLine_2}}
\ccGlue
\ccNestedType{Collinear_are_strictly_ordered_along_line_2}{a model of \ccc{Kernel::CollinearAreStrictlyOrderedAlongLine_2}}
\ccGlue
\ccNestedType{Counterclockwise_in_between_2}{a model of \ccc{Kernel::CounterclockwiseInBetween_2}}
\ccGlue
\ccNestedType{Do_intersect_2}{a model of \ccc{Kernel::DoIntersect_2}}

\ccHeading{Three-dimensional Kernel}


\ccHeading{Coordinate Access}

\ccNestedType{Cartesian_const_iterator_3}{a model of \ccc{Kernel::CartesianConstIterator_3}}


\ccHeading{Geometric Objects}

\ccNestedType{Point_3}{a model of \ccc{Kernel::Point_3}}
\ccGlue
\ccNestedType{Vector_3}{a model of \ccc{Kernel::Vector_3}}
\ccGlue
\ccNestedType{Direction_3}{a model of \ccc{Kernel::Direction_3}}
\ccGlue
\ccNestedType{Iso_cuboid_3}{a model of \ccc{Kernel::IsoCuboid_3}}
\ccGlue
\ccNestedType{Line_3}{a model of \ccc{Kernel::Line_3}}
\ccGlue
\ccNestedType{Ray_3}{a model of \ccc{Kernel::Ray_3}}
\ccGlue
\ccNestedType{Circle_3}{a model of \ccc{Kernel::Circle_3}}
\ccGlue
\ccNestedType{Sphere_3}{a model of \ccc{Kernel::Sphere_3}}
\ccGlue
\ccNestedType{Segment_3}{a model of \ccc{Kernel::Segment_3}}
\ccGlue
\ccNestedType{Plane_3}{a model of \ccc{Kernel::Plane_3}}
\ccGlue
\ccNestedType{Triangle_3}{a model of \ccc{Kernel::Triangle_3}}
\ccGlue
\ccNestedType{Tetrahedron_3}{a model of \ccc{Kernel::Tetrahedron_3}}
%\ccGlue
%\ccNestedType{Weighted_point_3}{a model of Kernel::WeightedPoint\_3}
%%\ccGlue
%%\ccNestedType{Aff_transformation_3}{}
\ccGlue
\ccNestedType{Object_3}{a model of \ccc{Kernel::Object_3}}

\ccHeading{Constructions}

\ccNestedType{Construct_point_3}{a model of \ccc{Kernel::ConstructPoint_3}}
\ccGlue
\ccNestedType{Construct_vector_3}{a model of \ccc{Kernel::ConstructVector_3}}
\ccGlue
\ccNestedType{Construct_direction_3}{a model of \ccc{Kernel::ConstructDirection_3}}
\ccGlue
\ccNestedType{Construct_plane_3}{a model of \ccc{Kernel::ConstructPlane_3}}
\ccGlue
\ccNestedType{Construct_iso_cuboid_3}{a model of \ccc{Kernel::ConstructIsoCuboid_3}}
\ccGlue
\ccNestedType{Construct_line_3}{a model of \ccc{Kernel::ConstructLine_3}}
\ccGlue
\ccNestedType{Construct_ray_3}{a model of \ccc{Kernel::ConstructRay_3}}
\ccGlue
\ccNestedType{Construct_sphere_3}{a model of \ccc{Kernel::ConstructSphere_3}}
\ccGlue
\ccNestedType{Construct_segment_3}{a model of \ccc{Kernel::ConstructSegment_3}}
\ccGlue
\ccNestedType{Construct_triangle_3}{a model of \ccc{Kernel::ConstructTriangle_3}}
\ccGlue
\ccNestedType{Construct_tetrahedron_3}{a model of \ccc{Kernel::ConstructTetrahedron_3}}
\ccGlue
\ccNestedType{Construct_object_3}{a model of \ccc{Kernel::ConstructObject_3}}
%%\ccGlue
%%\ccNestedType{Construct_aff_transformation_3}{}
\ccGlue
\ccNestedType{Construct_scaled_vector_3}{a model of \ccc{Kernel::ConstructScaledVector_3}}
\ccGlue
\ccNestedType{Construct_translated_point_3}{a model of \ccc{Kernel::ConstructTranslatedPoint_3}}
\ccGlue
\ccNestedType{Construct_point_on_3}{a model of \ccc{Kernel::ConstructPointOn_3}}
\ccGlue
\ccNestedType{Construct_projected_point_3}{a model of \ccc{Kernel::ConstructProjectedPoint_3}}
\ccGlue
\ccNestedType{Construct_lifted_point_3}{a model of \ccc{Kernel::ConstructLiftedPoint_3}}
%%\ccGlue
%%\ccNestedType{Construct_second_point_on_3}{}
%%\ccGlue
%%\ccNestedType{Construct_source_point_3}{}
%%\ccGlue
%%\ccNestedType{Construct_target_point_3}{}
%%\ccGlue
%%\ccNestedType{Construct_min_point_3}{}
%%\ccGlue
%%\ccNestedType{Construct_max_point_3}{}
\ccGlue
\ccNestedType{Construct_cartesian_const_iterator_3}{a model of \ccc{Kernel::ConstructCartesianConstIterator_3}}
\ccGlue
\ccNestedType{Construct_vertex_3}{a model of \ccc{Kernel::ConstructVertex_3}}
\ccGlue
\ccNestedType{Construct_bbox_3}{a model of \ccc{Kernel::ConstructBbox_3}}
%%\ccGlue
%%\ccNestedType{Construct_direction_of_line_3}{}
%%\ccGlue
%%\ccNestedType{Construct_direction_of_ray_3}{}
\ccGlue
\ccNestedType{Construct_supporting_plane_3}{a model of \ccc{Kernel::ConstructSupportingPlane_3}}
\ccGlue
\ccNestedType{Construct_orthogonal_vector_3}{a model of \ccc{Kernel::ConstructOrthogonalVector_3}}
\ccGlue
\ccNestedType{Construct_base_vector_3}{a model of \ccc{Kernel::ConstructBaseVector_3}}
\ccGlue
\ccNestedType{Construct_perpendicular_plane_3}{a model of \ccc{Kernel::ConstructPerpendicularPlane_3}}
\ccGlue
\ccNestedType{Construct_radical_plane_3}{a model of \ccc{Kernel::ConstructRadicalPlane_3}}
\ccGlue
\ccNestedType{Construct_perpendicular_line_3}{a model of \ccc{Kernel::ConstructPerpendicularLine_3}}
\ccGlue
\ccNestedType{Construct_midpoint_3}{a model of \ccc{Kernel::ConstructMidpoint_3}}
\ccGlue
\ccNestedType{Construct_center_3}{a model of \ccc{Kernel::ConstructCenter_3}}
\ccGlue
\ccNestedType{Construct_centroid_3}{a model of \ccc{Kernel::ConstructCentroid_3}}
\ccGlue
\ccNestedType{Construct_circumcenter_3}{a model of \ccc{Kernel::ConstructCircumcenter_3}}
\ccGlue
\ccNestedType{Construct_bisector_3}{a model of \ccc{Kernel::ConstructBisector_3}}
\ccGlue
\ccNestedType{Construct_cross_product_vector_3}{a model of \ccc{Kernel::ConstructCrossProductVector_3}}
\ccGlue
\ccNestedType{Construct_opposite_direction_3}{a model of \ccc{Kernel::ConstructOppositeDirection_3}}
\ccGlue
\ccNestedType{Construct_opposite_segment_3}{a model of \ccc{Kernel::ConstructOppositeSegment_3}}
\ccGlue
\ccNestedType{Construct_opposite_ray_3}{a model of \ccc{Kernel::ConstructOppositeRay_3}}
\ccGlue
\ccNestedType{Construct_opposite_line_3}{a model of \ccc{Kernel::ConstructOppositeLine_3}}
\ccGlue
\ccNestedType{Construct_opposite_plane_3}{a model of \ccc{Kernel::ConstructOppositePlane_3}}
\ccGlue
\ccNestedType{Construct_opposite_sphere_3}{a model of \ccc{Kernel::ConstructOppositeSphere_3}}
\ccGlue
\ccNestedType{Construct_opposite_vector_3}{a model of \ccc{Kernel::ConstructOppositeVector_3}}

If the result type is not determined, there is no \ccc{Construct_} prefix:

%%\ccNestedType{Transform_3}{}
%%\ccGlue
\ccNestedType{Intersect_3}{a model of \ccc{Kernel::Intersect_3}}
\ccGlue
\ccNestedType{Assign_3}{a model of \ccc{Kernel::Assign_3}}

If the result type is a number type, the prefix is \ccc{Compute_}:

\ccNestedType{Compute_area_3}{a model of \ccc{Kernel::ComputeArea_3}}
\ccGlue
\ccNestedType{Compute_squared_area_3}{a model of \ccc{Kernel::ComputeSquaredArea_3}}
\ccGlue
\ccNestedType{Compute_area_divided_by_pi_3}{a model of \ccc{Kernel::ComputeAreaDividedByPi_3}}
\ccGlue
\ccNestedType{Compute_approximate_area_3}{a model of \ccc{Kernel::ComputeApproximateArea_3}}
\ccGlue
\ccNestedType{Compute_squared_distance_3}{a model of \ccc{Kernel::ComputeSquaredDistance_3}}
\ccGlue
\ccNestedType{Compute_squared_length_3}{a model of \ccc{Kernel::ComputeSquaredLength_3}}
\ccGlue
\ccNestedType{Compute_squared_length_divided_by_pi_square_3}{a model of \ccc{Kernel::ComputeSquaredLengthDividedByPiSquare_3}}
\ccGlue
\ccNestedType{Compute_approximate_squared_length_3}{a model of \ccc{Kernel::ComputeApproximateSquaredLength_3}}
\ccGlue
\ccNestedType{Compute_squared_radius_3}{a model of \ccc{Kernel::ComputeSquaredRadius_3}}
\ccGlue
\ccNestedType{Compute_volume_3}{a model of \ccc{Kernel::ComputeVolume_3}}

\ccHeading{Generalized Predicates}

\ccNestedType{Angle_3}{a model of \ccc{Kernel::Angle_3}}
\ccGlue
\ccNestedType{Equal_3}{a model of \ccc{Kernel::Equal_3}}
\ccGlue
\ccNestedType{Equal_x_3}{a model of \ccc{Kernel::EqualX_3}}
\ccGlue
\ccNestedType{Equal_y_3}{a model of \ccc{Kernel::EqualY_3}}
\ccGlue
\ccNestedType{Equal_z_3}{a model of \ccc{Kernel::EqualZ_3}}
\ccGlue
\ccNestedType{Equal_xy_3}{a model of \ccc{Kernel::EqualXY_3}}
\ccGlue
\ccNestedType{Less_x_3}{a model of \ccc{Kernel::LessX_3}}
\ccGlue
\ccNestedType{Less_y_3}{a model of \ccc{Kernel::LessY_3}}
\ccGlue
\ccNestedType{Less_z_3}{a model of \ccc{Kernel::LessZ_3}}
\ccGlue
\ccNestedType{Less_xy_3}{a model of \ccc{Kernel::LessXY_3}}
\ccGlue
\ccNestedType{Less_xyz_3}{a model of \ccc{Kernel::LessXYZ_3}}
\ccGlue
\ccNestedType{Compare_x_3}{a model of \ccc{Kernel::CompareX_3}}
\ccGlue
\ccNestedType{Compare_y_3}{a model of \ccc{Kernel::CompareY_3}}
\ccGlue
\ccNestedType{Compare_z_3}{a model of \ccc{Kernel::CompareZ_3}}
\ccGlue
\ccNestedType{Compare_xy_3}{a model of \ccc{Kernel::CompareXY_3}}
\ccGlue
\ccNestedType{Compare_xyz_3}{a model of \ccc{Kernel::CompareXYZ_3}}
\ccGlue
\ccNestedType{Less_signed_distance_to_plane_3}{a model of \ccc{Kernel::LessSignedDistanceToPlane_3}}
\ccGlue
\ccNestedType{Less_distance_to_point_3}{a model of \ccc{Kernel::LessDistanceToPoint_3}}
\ccGlue
\ccNestedType{Compare_distance_3}{a model of \ccc{Kernel::CompareDistance_3}}
\ccGlue
\ccNestedType{Collinear_3}{a model of \ccc{Kernel::Collinear_3}}
\ccGlue
\ccNestedType{Coplanar_3}{a model of \ccc{Kernel::Coplanar_3}}
\ccGlue
\ccNestedType{Orientation_3}{a model of \ccc{Kernel::Orientation_3}}
\ccGlue
\ccNestedType{Coplanar_orientation_3}{a model of \ccc{Kernel::CoplanarOrientation_3}}
\ccGlue
\ccNestedType{Coplanar_side_of_bounded_circle_3}{a model of \ccc{Kernel::CoplanarSideOfBoundedCircle_3}}
\ccGlue
\ccNestedType{Side_of_oriented_sphere_3}{a model of \ccc{Kernel::SideOfOrientedSphere_3}}
\ccGlue
\ccNestedType{Side_of_bounded_sphere_3}{a model of \ccc{Kernel::SideOfBoundedSphere_3}}
\ccGlue
\ccNestedType{Is_degenerate_3}{a model of \ccc{Kernel::IsDegenerate_3}}
\ccGlue
\ccNestedType{Has_on_3}{a model of \ccc{Kernel::HasOn_3}}
\ccGlue
\ccNestedType{Has_on_bounded_side_3}{a model of \ccc{Kernel::HasOnBoundedSide_3}}
\ccGlue
\ccNestedType{Has_on_unbounded_side_3}{a model of \ccc{Kernel::HasOnUnboundedSide_3}}
\ccGlue
\ccNestedType{Has_on_boundary_3}{a model of \ccc{Kernel::HasOnBoundary_3}}
\ccGlue
\ccNestedType{Has_on_positive_side_3}{a model of \ccc{Kernel::HasOnPositiveSide_3}}
\ccGlue
\ccNestedType{Has_on_negative_side_3}{a model of \ccc{Kernel::HasOnNegativeSide_3}}
\ccGlue
\ccNestedType{Oriented_side_3}{a model of \ccc{Kernel::OrientedSide_3}}
\ccGlue
\ccNestedType{Bounded_side_3}{a model of \ccc{Kernel::BoundedSide_3}}
\ccGlue
\ccNestedType{Are_parallel_3 }{a model of \ccc{Kernel::AreParallel_3}}
\ccGlue
\ccNestedType{Are_ordered_along_line_3 }{a model of \ccc{Kernel::AreOrderedAlongLine_3}}
\ccGlue
\ccNestedType{Are_strictly_ordered_along_line_3}{a model of \ccc{Kernel::AreStrictlyOrderedAlongLine_3}}
\ccGlue
\ccNestedType{Collinear_are_ordered_along_line_3}{a model of \ccc{Kernel::CollinearAreOrderedAlongLine_3}}
\ccGlue
\ccNestedType{Collinear_are_strictly_ordered_along_line_3}{a model of \ccc{Kernel::CollinearAreStrictlyOrderedAlongLine_3}}
\ccGlue
\ccNestedType{Do_intersect_3}{a model of \ccc{Kernel::DoIntersect_3}}

\ccOperations

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 \ccc{_object} appended.  For
example, for the function object
\ccc{Kernel::Construct_vector_2} the following member function must exist:

\ccTexHtml{\ccSetThreeColumns{Kernel::Are_strictly_ordered_along_line}{}{\hspace
*{4.5cm}}}{}

\setlength{\parskip}{0pt}

\ccMemberFunction{Kernel::Construct_vector_2 construct_vector_2_object() const ;}
{}

\def\ccTagRmEigenClassName{\ccTrue}

\ccSeeAlso

\ccc{Kernel_d}

\end{ccRefConcept}
