mirror of https://github.com/CGAL/cgal
116 lines
2.9 KiB
C++
116 lines
2.9 KiB
C++
|
|
/*!
|
|
\ingroup PkgTriangulation2Concepts
|
|
\cgalConcept
|
|
|
|
The concept `ConstrainedTriangulationTraits_2` defines the requirements for the geometric
|
|
traits class of a constrained triangulation
|
|
( `CGAL::Constrained_triangulation_2<Traits,Tds,Itag>`)
|
|
that supports intersections of input constraints (i. e.
|
|
when the template parameter `Itag` is instantiated
|
|
by one of the tag classes `CGAL::Exact_intersections_tag` or
|
|
`CGAL::Exact_predicates_tag`). This concept refines the concept
|
|
`TriangulationTraits_2`, adding requirements for function objects
|
|
to compute the intersection points of two constraints.
|
|
When `CGAL::Exact_predicates_tag` is used, the
|
|
traits class is
|
|
also required to provide additional types
|
|
to compute the squared distance between a point and a line
|
|
|
|
\cgalRefines `TriangulationTraits_2`
|
|
|
|
\cgalHasModel All \cgal Kernels
|
|
\cgalHasModel `CGAL::Projection_traits_xy_3<K>`
|
|
\cgalHasModel `CGAL::Projection_traits_yz_3<K>`
|
|
\cgalHasModel `CGAL::Projection_traits_xz_3<K>`
|
|
|
|
\sa `TriangulationTraits_2`
|
|
\sa `ConstrainedDelaunayTriangulationTraits_2`
|
|
\sa `CGAL::Constrained_triangulation_2<Traits,Tds,Itag>`
|
|
|
|
*/
|
|
|
|
class ConstrainedTriangulationTraits_2 {
|
|
public:
|
|
|
|
/// \name Types
|
|
/// @{
|
|
|
|
/*!
|
|
A function object whose `operator()` computes the intersection of two segments.
|
|
|
|
`boost:optional<boost::variant<Point_2,Segment_2> > operator()(Segment_2 s1, Segment_2 s2);`
|
|
Returns the intersection of `s1` and `s2`.
|
|
*/
|
|
typedef unspecified_type Intersect_2;
|
|
|
|
///@}
|
|
|
|
/// \name Types required with Exact_predicates_tag
|
|
/// When the constrained triangulation is instantiated with the intersection tag `CGAL::Exact_predicates_tag`, the used algorithm needs to be able to compare some distances between points and lines and the following types are further required.
|
|
/// @{
|
|
|
|
/*!
|
|
A number type supporting the comparison operator `<`.
|
|
*/
|
|
typedef unspecified_type RT;
|
|
|
|
/*!
|
|
The line type.
|
|
*/
|
|
typedef unspecified_type Line_2;
|
|
|
|
/*!
|
|
A function object whose `operator()`
|
|
constructs a line from two points.
|
|
|
|
`Line_2 operator()(Point_2 p1, Point_2 p2)`.
|
|
*/
|
|
typedef unspecified_type Construct_line_2;
|
|
|
|
/*!
|
|
A function object whose
|
|
`operator()` computes the squared distance between
|
|
a line and a point.
|
|
|
|
`RT operator()(Line_2 l, Point_2 p);` Returns the squared distance
|
|
between `p` and `l`.
|
|
*/
|
|
typedef unspecified_type Compute_squared_distance_2;
|
|
|
|
/*!
|
|
A function object whose
|
|
`operator()` computes the bounding box of a point.
|
|
|
|
CGAL::Bbox_2 operator()(Point_2 p);` Returns the bounding box of `p`.
|
|
The result type is `CGAL::Bbox_2` (even for projection traits classes).
|
|
*/
|
|
typedef unspecified_type Compute_bounding_box_2;
|
|
|
|
/// @}
|
|
|
|
/// \name Access to Constructor Objects
|
|
/// @{
|
|
|
|
/*!
|
|
|
|
*/
|
|
Intersect_2 intersect_2_object();
|
|
|
|
/*!
|
|
required when
|
|
the intersection tag is `CGAL::Exact_predicates_tag`.
|
|
*/
|
|
Construct_line_2 construct_line_2_object();
|
|
|
|
/*!
|
|
required when
|
|
the intersection tag is `CGAL::Exact_predicates_tag`.
|
|
*/
|
|
Compute_squared_distance_2
|
|
compute_squared_distance_2_object();
|
|
|
|
/// @}
|
|
|
|
}; /* end ConstrainedTriangulationTraits_2 */
|