mirror of https://github.com/CGAL/cgal
133 lines
2.9 KiB
C++
133 lines
2.9 KiB
C++
/*!
|
|
\ingroup PkgSurfaceMeshSegmentationConcepts
|
|
\cgalConcept
|
|
|
|
The concept `SegmentationGeomTraits` describes the set of requirements
|
|
of the geometric traits needed by the segmentation functions.
|
|
|
|
\cgalHasModelsBegin
|
|
\cgalHasModelsBare{All models of the \cgal concept `Kernel`}
|
|
\cgalHasModelsEnd
|
|
|
|
\cgalRefines{AABBGeomTraits_3}
|
|
|
|
*/
|
|
|
|
class SegmentationGeomTraits {
|
|
public:
|
|
|
|
/// \name Number Type
|
|
/// @{
|
|
/*!
|
|
A number type model of `FieldNumberType` for which an overload of the function `to_double()` is defined
|
|
*/
|
|
typedef unspecified_type FT;
|
|
/// @}
|
|
|
|
/// \name Geometric Types
|
|
/// @{
|
|
|
|
/*!
|
|
The point type.
|
|
*/
|
|
typedef unspecified_type Point_3;
|
|
|
|
/*!
|
|
The vector type.
|
|
*/
|
|
typedef unspecified_type Vector_3;
|
|
|
|
/*!
|
|
The segment type.
|
|
*/
|
|
typedef unspecified_type Segment_3;
|
|
|
|
/*!
|
|
The plane type.
|
|
*/
|
|
typedef unspecified_type Plane_3;
|
|
|
|
/*!
|
|
The ray type.
|
|
*/
|
|
typedef unspecified_type Ray_3;
|
|
|
|
/// @}
|
|
|
|
/// \name Function Object Types
|
|
/// @{
|
|
|
|
/*!
|
|
Function object model of Kernel::Angle_3 for the aforementioned geometric types.
|
|
*/
|
|
typedef unspecified_type Angle_3;
|
|
|
|
/*!
|
|
Function object model of Kernel::ComputeScalarProduct_3 for the aforementioned geometric types.
|
|
*/
|
|
typedef unspecified_type Compute_scalar_product_3;
|
|
|
|
/*!
|
|
Function object model of Kernel::ComputeSquaredDistance_3 for the aforementioned geometric types.
|
|
*/
|
|
typedef unspecified_type Compute_squared_distance_3;
|
|
|
|
/*!
|
|
Function object model of Kernel::ConstructCrossProductVector_3 for the aforementioned geometric types.
|
|
*/
|
|
typedef unspecified_type Construct_cross_product_vector_3;
|
|
|
|
/*!
|
|
Function object model of Kernel::ConstructNormal_3 for the aforementioned geometric types.
|
|
*/
|
|
typedef unspecified_type Construct_normal_3;
|
|
|
|
/*!
|
|
Function object model of Kernel::ConstructCentroid_3 for the aforementioned geometric types.
|
|
*/
|
|
typedef unspecified_type Construct_centroid_3;
|
|
|
|
/*!
|
|
Function object model of Kernel::ConstructTranslatedPoint_3 for the aforementioned geometric types.
|
|
*/
|
|
typedef unspecified_type Construct_translated_point_3;
|
|
|
|
/*!
|
|
Function object model of Kernel::ConstructScaledVector_3 for the aforementioned geometric types.
|
|
*/
|
|
typedef unspecified_type Construct_scaled_vector_3;
|
|
|
|
/*!
|
|
Function object model of Kernel::ConstructSumOfVectors_3 for the aforementioned geometric types.
|
|
*/
|
|
typedef unspecified_type Construct_sum_of_vectors_3;
|
|
|
|
/*!
|
|
Function object model of Kernel::Collinear_3 for the aforementioned geometric types.
|
|
*/
|
|
class Collinear_3
|
|
{
|
|
public:
|
|
//!determines if points `p`, `q` and `r` are collinear.
|
|
bool operator()(const Point_3 &p,
|
|
const Point_3 &q,
|
|
const Point_3 &r);
|
|
};
|
|
|
|
/// @}
|
|
|
|
/// \name Operations
|
|
/// @{
|
|
/*! For each of the above function and predicate object types, `Func_obj_type`,
|
|
* a function must exist with the name `func_obj_type_object` that creates
|
|
* an instance of the function or predicate object type.
|
|
|
|
For example:
|
|
*/
|
|
Collinear_3
|
|
collinear_3_object()const
|
|
{return Collinear_3();}
|
|
|
|
/// @}
|
|
}; /* end SegmentationGeomTraits */
|